<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>nEx.Software</title>
	
	<link>http://nexsoftware.net/wp</link>
	<description />
	<lastBuildDate>Tue, 22 Jun 2010 14:36:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/nexsoftware" /><feedburner:info uri="nexsoftware" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
		<title>How Not To Ask A Developer For Updates</title>
		<link>http://nexsoftware.net/wp/2010/06/22/how-not-to-ask-a-developer-for-updates/</link>
		<comments>http://nexsoftware.net/wp/2010/06/22/how-not-to-ask-a-developer-for-updates/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 14:35:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nexsoftware.net/wp/?p=252</guid>
		<description><![CDATA[Recently, we received an email from a customer looking for updates on BarTor. OK, not all that uncommon right? The thing that stood out was the approach this customer took in asking for these updates. Lets just say that it was shockingly hostile, especially for a first contact email. Rather than explaining it, I will [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, we received an email from a customer looking for updates on BarTor. OK, not all that uncommon right? The thing that stood out was the approach this customer took in asking for these updates. Lets just say that it was shockingly hostile, especially for a first contact email. Rather than explaining it, I will just include the email here along with my response.<br />
<span id="more-252"></span></p>
<blockquote><p>
From: Chris<br />
Date: Sun, Jun 20, 2010 at 4:35 AM</p>
<p>the open source world should bitch slap you across the fucking face for getting rich off of us &#8211; at least $10,000 rich and now you&#8217;re ignoring us and no longer providing updates to an app that you charged $2.99 on the android market??????? how&#8217;s about an update you fucking cheapskate. your app only searches for torrents from isohunt.com and isohunt.com has since gone legit and no longer carries any torrents worth downloading. wtf man? i outta press charges on your ass. i&#8217;m looking into googles agreement and checking to see if you are at fault here. dick.</p>
</blockquote>
<p>And my response:</p>
<blockquote><p>
To: Chris<br />
Date: Sun, Jun 20, 2010 at 7:46 AM</p>
<p>Hello Chris,</p>
<p>How are you? I am sorry to hear that you are upset about the BarTor update frequency; however, a little respect would have been more appropriate. </p>
<p>Although, I don&#8217;t think your email truly warrants a response, I will do so. First and foremost, a general tip on social etiquette: when making first contact with someone, especially someone who you expect to do something for you, hostility is rarely an appropriate method.</p>
<p>nEx.Software as an entity, and in particular the product, BarTor, has little to do with the open source community. BarTor was a commercial endeavour and unfortunately a rather unsuccessful one. I can&#8217;t even begin to guess where you got your estimate from, but I can assure that the real numbers are FAR less than that&#8230; more in the $1,000-$1,500 range over the course of 15 months. Not that it is any of our business though.</p>
<p>Although ISOHunt may have changed its business model, BarTor continues to function as intended and advertised. Your assumption that the business model of ISOHunt has any direct correlation or impact on BarTor is just plain wrong.</p>
<p>Yours is the first email we have received of this nature, so I can assure you we have not ignored anyone. As previously stated, BarTor continues to work as intended and I think most people understand that.</p>
<p>That being said, we are not opposed to making an update if it seems necessary, but sending hostile threats is not a good way to let us know you&#8217;d like an update.</p>
<p>Respectfully,</p>
<p>Justin<br />
Founder<br />
nEx.Software</p>
<p>http://www.nexsoftware.net</p>
</blockquote>
<p>Now, I am sure that I will catch a little flack about the &#8220;has little to do with the open source community&#8221; comment in my response but, if we are being completely honest, it is mostly true. While I, Justin, make an attempt to be a part of the community and contribute occasionally, nEx.Software itself does not follow an open source model. But that&#8217;s enough about that, as it is not the point of this post.</p>
<p>The reason I posted this here is due to the fact that I was a little bit floored by this first contact email from someone looking for something from us. I certainly understand that this customer is frustrated, and would like us to update the software; however, this approach of name-calling and making threats is almost guaranteed to not have the intended effect.</p>
<p>So, now that we know how not to approach developers to ask for updates&#8230; Let me give a tip on how to approach us: Ask nicely. I know, profound, huh? Even if it is only for the first email you send, a first impression goes a long way.</p>
]]></content:encoded>
			<wfw:commentRss>http://nexsoftware.net/wp/2010/06/22/how-not-to-ask-a-developer-for-updates/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Announcement: Android 1.5 and nEx.Software Apps</title>
		<link>http://nexsoftware.net/wp/2009/11/05/announcement-android-1-5-and-nex-software-apps/</link>
		<comments>http://nexsoftware.net/wp/2009/11/05/announcement-android-1-5-and-nex-software-apps/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 16:13:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://nexsoftware.net/wp/?p=239</guid>
		<description><![CDATA[We at nEx.Software feel strongly about Android, and we want to see it evolve. For SOME of the world, Android HAS evolved. The release of Android 1.6 in October of 2009 brought Android to a new level in many ways, and we feel that this is a step in the right direction. The fact that [...]]]></description>
			<content:encoded><![CDATA[<p>We at nEx.Software feel strongly about Android, and we want to see it evolve. For SOME of the world, Android HAS evolved. The release of Android 1.6 in October of 2009 brought Android to a new level in many ways, and we feel that this is a step in the right direction. The fact that there are still phones being released based on Android 1.5 (Motorola CLIQ [T-Mobile], Samsung Behold II [T-Mobile], Samsung Moment [Sprint], HTC Hero [Sprint], HTC Droid Eris [Verizon], and even a Motorola device rumored to be coming out in 2010 [Unknown]) is counterproductive to this evolution. While we do understand that it takes time to update something as big as an operating system, and this is especially true when dealing with custom user interfaces and functionalities, there needs to be a sense of urgency coming from manufacturers and carriers.<br />
<span id="more-239"></span><br />
It is our opinion that, as long as applications are being made to support Android 1.5, there is no true drive for the manufacturers to upgrade their users&#8217; devices. But what would happen if users of those devices were unable to access many of the applications in the Market (undoubtedly, this is the case already)? Surely, that would create the sense of urgency that seems to be missing at this time. We cannot have users missing out on the evolution of Android simply because the manufacturers and/or carriers don&#8217;t see a need or don&#8217;t think that those features are necessary for a certain device. This is an unacceptable approach to Android, in our opinion.</p>
<p>Accordingly, we have decided to no longer support Android 1.5 in the Android Market. We propose that other developers, who are able to do so, do the same in an effort to exact change. We are aware that there are many developers who cannot or will not follow in this decision, and we respect their decision whatever they choose. This is the path we have chosen to take.</p>
<p>We will be updating all of our applications currently available in the Android Market to require Android 1.6. We will however, try to move Android 1.5 versions into the alternative markets (such as <a href="http://www.andappstore.com">AndAppStore</a> and <a href="http://www.slideme.org">SlideME</a>), and, where it makes sense to do so, we will distribute the Android 1.5 versions from our website.</p>
<p>You may be asking “Why not Android 2.0?” and to that we have to bring up the fact that ONLY ONE device is currently running Android 2.0, and as of the time of this announcement Google has given no indication that Android 2.0 will be made available in the Android Open Source Project anytime soon. While it is true that manufacturers may have or get access to Android 2.0, the fact remains that we have seen no commitment from these manufacturers that they will in fact update existing devices (HTC has announced via Twitter that the Hero will receive an update 2.0, but failed to mention anything about Dream and/or Sapphire devices).</p>
]]></content:encoded>
			<wfw:commentRss>http://nexsoftware.net/wp/2009/11/05/announcement-android-1-5-and-nex-software-apps/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>My Three-Day Review Of The Motorola CLIQ</title>
		<link>http://nexsoftware.net/wp/2009/11/01/my-three-day-review-of-the-motorola-cliq/</link>
		<comments>http://nexsoftware.net/wp/2009/11/01/my-three-day-review-of-the-motorola-cliq/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 22:06:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nexsoftware.net/wp/?p=222</guid>
		<description><![CDATA[After having my Motorola CLIQ for three days, I decided to write down my thoughts and opinions of the phone and specifically focus on those aspects that are (in my opinion) of interest to current Android users who are looking at the CLIQ as a possible upgrade device. So here it goes&#8230;
The Contents of the [...]]]></description>
			<content:encoded><![CDATA[<p>After having my Motorola CLIQ for three days, I decided to write down my thoughts and opinions of the phone and specifically focus on those aspects that are (in my opinion) of interest to current Android users who are looking at the CLIQ as a possible upgrade device.<span id="more-222"></span> So here it goes&#8230;</p>
<p><strong>The Contents of the Box:</strong><br />
•	Motorola CLIQ Phone<br />
•	AC Adapter Plug<br />
•	USB Cable<br />
•	SIM Card<br />
•	Instructions</p>
<p>Of course, there is nothing incredibly out-of-the-ordinary here but there are a few things worthy of a mention. First, the AC Adapter plug&#8230; It&#8217;s just that&#8230; a plug. You actually use the provided USB Cable for both the AC Power and for connecting your phone to your computer. This works fine, it is just weird. Second, there is a curious lack of reference to Android in the instructions. It&#8217;s there, just infrequently. Again, it’s just a little weird, especially considering Motorola’s almost over-zealous dedication to Android.</p>
<p><strong>The Hardware:</strong><br />
Having heard numerous people half-jokingly refer to the CLIQ as a toy, I am pleasantly surprised at the perceived ruggedness of the build. Only time will tell whether the ruggedness is real or not, but at this point I’m quite happy with it. When compared to the HTC Dream (T-Mobile G1) the lack of the swivel motion in the keyboard makes it seem sturdier. Also unlike the Dream there is far less motion between the front and back pieces when closed. There is still some motion, however, which is most noticeable when pressing at the left and right edges of the screen. So far there is no creaking or squeaking related to this motion, which was not the case with the Dream.</p>
<p>The CLIQ is similar in size and weight to the HTC Sapphire (T-Mobile MyTouch 3G, HTC Magic), but slightly thicker. And, although similar shape, the CLIQ does lack the “chin” as seen on most of the HTC Android devices. So if you don’t dig the chin, you might find the flat-face of the CLIQ more appealing.</p>
<p>When closed, the CLIQ has the Menu (designated by four squares), Home, and Back buttons on the front, a silent-mode switch and volume rocker on the left, the power/lock button and camera button on the right. On the top is the 3.5mm headphone jack and on the left is the MicroUSB slot. Slide open the keyboard to reveal the 5-Way Directional Pad to the left of the Four-Row Keyboard. For those coming from one of the existing Android devices such as the Dream, Sapphire, or Hero, this is where things get different.</p>
<p>The fact that you have to open the keyboard to get at the directional pad is somewhat troublesome. It’s amazing but you don’t realize how often you actually use the navigation controls (trackball or directional pad) until you don’t have them accessible. For me, this is most obvious when using the virtual keyboard and need to go back a few characters or lines to correct something. Having used a Dream and a Sapphire for nearly a year now, I find myself constantly going to the trackball only to find it isn’t there. Also, the placement of the directional pad on the left is proving to be a little hard for me handle. At first, I had though “Sweet! It’s more like the game controllers I am used to, this is going to be awesome!” but I have found I am more comfortable with the trackball on the right. Again, this is probably because I am used to it.</p>
<p>The keyboard itself is different and interesting to get used to. With the Dream, our beloved physical-keyboarded Android, we have a 5-Row Keyboard which makes typing a bit easier than with the 4-Row Keyboard of the CLIQ. Also, it may just be me but it seems like the CLIQ takes a touch more pressure to press the keys. That being said, the shape of the keys (somewhat like a rounded pyramid) and their closeness to each other actually helps with typing speed because in many cases you can rock between the keys easily. The keyboard is where the CLIQ gets its name. There is actually a clicking sound with each keypress. It’s not a software generated sound but rather there is an actual clicking sound coming from the hardware. I know what you are thinking… Yes, I think this is intentional and not a defect. It’s not loud but it is noticeable, which means no secret texting in class kids (unless you go virtual).</p>
<p>Lastly, something that isn’t really keyboard related but is related to typing on the CLIQ. The placement of the volume rocker on the left side (which becomes the bottom when the keyboard is open) is unfortunate. This is because depending on how you rest your non-typing fingers while typing you may find yourself accidentally adjusting your ringer volume frequently.</p>
<p>The touch screen is slightly smaller than the HTC phones, coming in at 3.1” as opposed to 3.2” but this doesn’t make a huge difference (for me at least). Sometimes the touch response can seem a little lagged and somewhat inaccurate but perhaps I am at fault. I find myself hitting the wrong keys on the virtual keyboard more often on the CLIQ than on my other phones.</p>
<p>So I bet at this point you are asking yourself, this is a phone so how does it work as a phone? Although I don’t often use my phone as a phone, I have found the voice quality both on the CLIQ side and on the other caller’s side is loud and clear, and without any weird artifacts. This is not new to me though as I have experienced flawless voice quality on my other Android phones as well.</p>
<p><strong>The Software:</strong><br />
Somewhat disappointing is the fact that the CLIQ, with its MOTOBLUR services, is based on Android 1.5. This is disappointing for two reasons: First, the CLIQ is being released on a carrier that has already rolled out Android 1.6 to all of its existing Android phones (T-Mobile USA). Second, Motorola is releasing another device only days later that is running Android 2.0. I understand that the CLIQ is Motorola’s first Android device and that its MOTOBLUR services were built on that framework, but Motorola obviously has had the benefit of knowing Android 2.0 for at least some time and I would have liked for them to have MOTOBLUR updated to Android 2.0. Perhaps there is going to be a quick follow-up release to upgrade CLIQ users to 2.0 but I doubt it.</p>
<p>So, now that we know MOTOBLUR was likely a part of reason that the CLIQ is being release with Android 1.5, let’s talk about those services and see if they justify the ends. We’ll begin with my experience starting up the phone and setting up the MOTOBLUR services, and then lead into how those services come into play with real use of the phone. Finally, I’ll discuss the overall experience without specific focus on MOTOBLUR.</p>
<p>Anyone who follows me on Twitter will know that I was very excited to receive my CLIQ and was very eager to get home from work and fire it up. And I did exactly that. I got home, I popped the SIM card out of my Sapphire and into the CLIQ and excitedly powered it on. Much as is the case with the instructions booklet, I found myself a touch confused when I was not presented with any indication that the phone I was booting was indeed Android. Instead, I got a pulsing MOTOBLUR logo. Fine, whatever, I can deal with that. I then got to what I will call the Welcome to Android screen, but again, saw no indication of Android’s presence. Instead I got a customized welcome screen and was directed to begin MOTOBLUR setup. This was easy enough, I enter my Name, my Email Address and a Password and I am good to go. After that I get to choose which accounts I sync (including MySpace, Facebook, Google, Last.FM, Twitter, Email, Corporate Sync, Picasa, Photbucket and Yahoo Mail). I am not sure if Google was optional or not but since this is Google Android, I chose it automatically. I also included Facebook and Twitter. It might have been nice to also have LinkedIn as an option for those corporate types. Everything went fine here and I was delivered to the Home screen of my phone.</p>
<p>Although I knew it was coming, I was caught a little off guard by the number of Widgets that were loaded by default to my Home screen. My Android experience, having flashed and re-flashed and wiped and re-wiped my phones countless times, has always been a minimalistic default Home screen. Instead I was presented with the Social Status, Happenings, Messages, Weather, News, Music, and Search Widgets already preloaded with either my social networking content or default selections. I updated the weather widget to show my location, removed the News and Music widgets, and went along my way a much happier person.<br />
As you probably noticed, I left all of the social networking widgets in place. So, how does “The First Phone With Social Skills” stack up in terms of social networking? It’s kind of a mixed bag. While I am generally pleased with the way that MOTOBLUIR retrieves my statuses and messages from various sites, there is a bit to be desired. First of all, I have yet to find out if there is a way that I can set the frequency at which these sites are polled for updates, or whether I can manually trigger an update. In the case of Twitter, where conversations seem to fly by at the speed of a hummingbird, I find myself a little behind the times when I get updates. The good thing: MOTOBLUR makes is very easy to see what is new because only new statuses are shown in the Happenings widget. Once you view them, they are removed from the widget (but are still available for viewing in the Happenings application). This behavior is the same for the Messages, and News widgets. The Happenings application also functions as a Twitter (or whatever service to which the current message applies) client but it is somewhat rudimentary. For example, there is a way to Reply to Tweets and to Direct Message the Sender of a Tweet, but there is no option to Retweet, or follow Mentions or Hashes. This is probably due to supporting so many different services that they had to compromise some functionality. Needless to say, I have not been able to use MOTOBLUR as my sole Twitter client. Facebook, operates in much the same way so I won’t go into that here. I use Facebook much less frequently that Twitter so I am happy with the MOTOBLUR implementation there.</p>
<p>Where I think MOTOBLUR shines is actually in its modifications to the Contacts application. Instead of just being a list of people, the Contacts application becomes yet another way to see the status of your Contacts and consolidates all of your contacts from your various synced services. Of course, you have the option to just view a list as well. The Dialer view presents us with the Dialer and additional tabs for Recent, Frequent, and Speed Dial contacts.</p>
<p>Of course, with these modifications, the Contacts database had to be changed. Unfortunately, there have been reports of Contacts based applications not functioning properly in some cases. Keep this in mind of you see any weird things happening and notify the developer of the affected application so they are aware and can implement a fix or help troubleshoot.</p>
<p>As that pretty much covers the main features of MOTOBLUR in the device (there are other features such as remote wipe, but those are not device related, so we’ll skip them for now) I will move on to the general observations of the user experience.</p>
<p>If you’ve seen any videos or screenshots of the CLIQ you will already know that the UI is modified from the vanilla Android experience. Most of the UI is similar but colors have been modified and some elements have changed graphically. The theme of the CLIQ is nEx.Software colors. Only kidding, but they are red and black so in most places that you would normally see orange, you see red. In most places this works but there are some places where it might have been best to not modify the colors. For example, the stars to indicate rating in the Market are red instead of green, which makes them a little difficult to see due to their small size.</p>
<p>The phone has no physical call or end call buttons, which means that you have to go to the home screen to make a call, which is fine because if you are making a call you probably don’t need to be in another app. As you would expect you can answer a call while in any application.</p>
<p>Overall, the phone seems a little snappier than the Dream and Sapphire (except for the HTC branded variant which has the 256MB RAM) because it has more RAM. However, I would imagine that MOTOBLUR can dig into the speed on updates, which it seems you have no control over.</p>
<p><strong>Conclusion:</strong><br />
After having spent three days with this phone, I have definite things that I like and things that I don’t really care for but I have been generally impressed by this phone and would say that it is a good entry into the Android market (not the Android Market of course). I would recommend it as a replacement for the Dream if a replacement was needed, but would probably not recommend it if there was no actual <em>need</em>. It’s just not that compelling an upgrade for those who don’t have to. For a new Android user who wants a keyboard I’d recommend it over the Dream. But I’d venture a guess that it would be hard to choose this over the Motorola Droid or some of the other Android phones de out in the near(ish) future.</p>
<p>An item of note that isn’t really a part of the review but I felt like mentioning anyway. There is currently a bug in the CLIQ firmware which has broken some games, and has caused them to not display their graphics (i.e. Buka and Totemo by Hexage). If you know of any games that are experiencing this issue, please let the developer know so that they can work around the bug.</p>
<p><strong>Please let me know if there is anything else you&#8217;d like to know about the CLIQ, or my experiences with it.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://nexsoftware.net/wp/2009/11/01/my-three-day-review-of-the-motorola-cliq/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Sialia</title>
		<link>http://nexsoftware.net/wp/2009/09/01/sialia/</link>
		<comments>http://nexsoftware.net/wp/2009/09/01/sialia/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 21:25:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nexsoftware.net/wp/?p=204</guid>
		<description><![CDATA[Coming soon&#8230;

]]></description>
			<content:encoded><![CDATA[<p>Coming soon&#8230;</p>
<div style="background:white; padding: 5px"><img class="aligncenter size-full wp-image-205" title="sialia" src="http://nexsoftware.net/wp/wp-content/uploads/2009/09/sialia.png" alt="sialia" width="160" height="210" /></div>
]]></content:encoded>
			<wfw:commentRss>http://nexsoftware.net/wp/2009/09/01/sialia/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tutorial – Creating a Custom Analog Clock Widget</title>
		<link>http://nexsoftware.net/wp/2009/07/29/tutorial-creating-a-custom-analogclock-widget/</link>
		<comments>http://nexsoftware.net/wp/2009/07/29/tutorial-creating-a-custom-analogclock-widget/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 15:06:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://nexsoftware.net/wp/?p=91</guid>
		<description><![CDATA[Hi all&#8230; Note, I am going to assume that there are at least a few people who have wandered off, gotten lost, and somehow ended up here. Hopefully, a few of you meant to be here too&#8230;
Yesterday, I was perusing the forums over at www.androidandme.com (as I often do) and one of the members had [...]]]></description>
			<content:encoded><![CDATA[<p>Hi all&#8230; Note, I am going to assume that there are at least a few people who have wandered off, gotten lost, and somehow ended up here. Hopefully, a few of you meant to be here too&#8230;</p>
<p>Yesterday, I was perusing the forums over at <a href="http://www.androidandme.com">www.androidandme.com</a> (as I often do) and one of the members had posted a question related to development. Of course, I hunt these down and pounce whenever I see them. So, on to the question, which I am going to strip down to the scope of this post&#8230; How does one write a custom Analog Clock Home Screen Widget for Android.</p>
<p style="text-align: left;"><img class="size-medium wp-image-200 aligncenter" title="AnalogClock" src="http://nexsoftware.net/wp/wp-content/uploads/2009/07/AnalogClock-200x300.png" alt="AnalogClock" width="200" height="300" />So, as I am sure you have already guessed, I have decided to write a tutorial (with code) to explain in detail how to do just that.</p>
<p>Before we continue, I should point out that as I am writing this I am going to assume that you have obtained, installed, and know how to use the software tools for Android Development. For the purpose of this tutorial, these tools are: JDK 1.5 or higher, Android 1.5 SDK, Eclipse 3.4 or higher, and the Android Development Tools Plugin for Eclipse.</p>
<p>Now that that is all out of the way, let&#8217;s move on to the tutorial&#8230;</p>
<p><span id="more-91"></span></p>
<p>First off, we are going to create a new Android Project in Eclipse. For my own code for the tutorial (which can be downloaded here), I will call the Project AnalogClockWidget, I will choose Android 1.5 as the build target (required for Widgets), I will set the Application Name to Analog Clock Widget, the package name to nEx.Software.Tutorials.Widgets.AnalogClock, and create an Activity called Info (this will be explained later).</p>
<p>During the course of this tutorial we will be creating several files that implement various aspects of the widget. These files we will be creating are:</p>
<ul>
<li>Java Source Files
<ul>
<li>Info.java</li>
<li>Widget.java</li>
</ul>
</li>
</ul>
<ul>
<li>Resource Files
<ul>
<li>res/xml/widget.xml</li>
<li>res/layout/info.xml</li>
<li>res/layout/widget.xml</li>
<li>res/drawable/widgetdial.png</li>
<li>res/drawable/widgethour.png</li>
<li>res/drawable/widgetminute.png</li>
</ul>
</li>
</ul>
<p>We will also be working with AndroidManifest.xml within the root directory of our project.</p>
<h3>Resource Files</h3>
<p>The most logical place to start in creating a widget such as this is creating the layout files and the xml file declaring the app-widgetprovider (in our case, res/xml/widget.xml).</p>
<p><strong><a href="http://nexsoftware.net/wp/wp-content/uploads/2009/07/res_xml_widget.xml.txt" target="_blank">res/xml/widget.xml</a></strong>: This file contains the definition of our Analog Clock widget. It is an xml file with only one element: appwidget-provider, which has the following attributes: xmlns:android (standard in Android resource files, defines the android namespace), android:minWidth (defines the minimum width of our Widget, translates to number of cells in the horizontal space), android:minHeight (defines the minimum height of our Widget, translates to number of cells in the vertical space), android:updatePeriodMillis (defines the update frequency, a value of 0 means no updates), android:initialLayout (a pointer to the layout file to display during loading of the widget).</p>
<p>the graphics I am using for this custom version of the Analog Clock will be a nEx.software themed version of the original Analog Clock. As such, I am going to use the same size parameters as the original. That that is, my Clock Dial will be 146ppx by 146 px. Ecah hand will be 14px by 146px.  This size will fit nicely into a 2 cell by 2 cell space on the home screen (in both landscape and portrait modes), just like the original clock. Note that we refer to res/layout/widget.xml here as our android:initialLayout.</p>
<p>Click the link at the beginning of this section to see what our widget definition should look like.</p>
<p><strong><a href="http://nexsoftware.net/wp/wp-content/uploads/2009/07/res_layout_info.xml.txt" target="_blank">res/layout/info.xml</a></strong>: This file simply provides the layout for an information screen to tell the user about your widget, and provide instructions on how to use it. In our case, we have a very simple widget which requires no configuration, and no special instructions so it will be a very simple layout containing only a LinearLayout and TextView. More complex widgets will usually require more complex information screens.</p>
<p>Click the link at the beginning of this section to see what our info screen should look like.</p>
<p><strong><a href="http://nexsoftware.net/wp/wp-content/uploads/2009/07/res_layout_widget.xml.txt" target="_blank">res/layout/widget.xml</a></strong>: This file provides the layout which we will use for our widget. Again, because this is a simple widget this will be a simple file. In fact, the only elements we will include here are RelativeLayout and AnalogClock. This could also be done without the RelativeLayout, but I usually prefer to have a container in my layout.</p>
<p>Click the link at the beginning of this section to see what our widget should look like.</p>
<p>The remainder of the Resource files listed above are just the graphics we will use for the clock, and need not be specifically mentioned here.</p>
<h3>Java Source Files</h3>
<p><strong>Info.java</strong>: This class extends Activity, and only serves to provide an informational screen to the user. Technically, this is not required for a Widget project, but I recommend it for the following reason:</p>
<p>If you plan to release to the Android Market, it will mitigate those useless and uninformed comments such as &#8220;It doesn&#8217;t launch.&#8221; or &#8220;Please remove from the app drawer.&#8221; and help you to achieve and retain a better ranking in the Android Market. So, I know you are thinking now &#8220;Spill the beans already!&#8221; so here it goes&#8230; Provide an Info activity which opens from the Android Market when the user presses the Open button, but does not add itself to the app drawer (Launcher). Sounds simple enough, so how do we do it? All you need to do is open the AndroidManifest.xml file,</p>
<p>and replace</p>
<p><code>android.intent.category.LAUNCHER</code></p>
<p>with</p>
<p><code>android.intent.category.INFO</code>.</p>
<p>It&#8217;s amazing how a simple change like this can easily amount to a full star or more in your Android Market rankings.</p>
<p>While we are in the AndroidManifest.xml file, we might as well make our other required changes too. Because this is a widget project, we must define our widget in the manifest. To do this, you must define a receiver tag with an intent-filter for <code>android.appwidget.action.APPWIDGET_UPDATE</code> and including a meta-data tag which defines the resource file for the widget.</p>
<p><a href="http://nexsoftware.net/wp/wp-content/uploads/2009/07/AndroidManifest.xml.txt" target="_blank">Click here to see what your AndroidManifest.xml file should now look like.</a></p>
<p><strong>Widget.java</strong>: This is where the magic happens, and is where we will spend the rest of this tutorial. In order to create and use a widget we must extend AppWidgetProvider. Remember, we already added the reference to this class in the AndroidManifest.xml file.</p>
<p>Because this is a very simple widget that relies on nothing but itself (no calls to the web, no background updates, etc&#8230;) our Widget class will be very simple. We will only handle the onReceive event that gets called by the AppWidget framework whenever a Widget is Added, Deleted, Updated, etc&#8230;</p>
<p>In this onReceive method we will only look watch for the &#8220;update&#8221; event, so that we can reapply our Widget when appropriate. For some reason, I decided on a blog format that doesn&#8217;t not work exceptionally well for including code within a post (layout is not really wide enough). Until I find a better layout for this sort of thing, <a href="http://nexsoftware.net/wp/wp-content/uploads/2009/07/Widget_onReceive.txt" target="_blank">please click here to view the code sample for our onReceive method</a>.</p>
<p>At this point, we actually have a working Analog Clock Widget, and could compile and use it as is. But that wouldn&#8217;t be any fun. What we also want to do is handle when the user clicks on the Clock, and take the user to the Alarm Clock application. to do that, we must create a PendingIntent, and assign it to the click event for the widget. Do do that we will add to the onReceive method three lines. <a href="http://nexsoftware.net/wp/wp-content/uploads/2009/07/Widget_onReceive_PendingIntent.txt" target="_blank">Please click here for the updated code</a>.</p>
<p>At this point, all that is left is to replace the widgetdial.png, widgethour.png, and widgetminute.png in the res/drawable/folder with your own graphics, compile, and install.</p>
<p>You can download my Eclipse project for this widget <a href="http://nexsoftware.net/wp/wp-content/uploads/2009/07/CustomAnalogClock.zip">here</a>.</p>
<p>Regrettably, I somewhat rushed this tutorial, since I had promised to get it out as soon as possible, and I am aware that there are things that could be done better (formatting, maybe more verbose, maybe simpler terminology, possibly different writing style). I intend to update this tutorial in the coming days to be fix some of these issues. Please let me know what I can do better, and offer any suggestions for improvements for this and future tutorials.</p>
]]></content:encoded>
			<wfw:commentRss>http://nexsoftware.net/wp/2009/07/29/tutorial-creating-a-custom-analogclock-widget/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>New Post Series – Custom Drawing in Android</title>
		<link>http://nexsoftware.net/wp/2009/07/27/new-post-series-custom-drawing-in-android/</link>
		<comments>http://nexsoftware.net/wp/2009/07/27/new-post-series-custom-drawing-in-android/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 18:38:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://nexsoftware.net/wp/?p=77</guid>
		<description><![CDATA[In BarTor, we custom draw a lot of our controls, and we do this for a couple of reasons. First, we do this so that we can have better contol of the overall look-and-feel of the application, and we also as a framework for color theming capability (in other words, allowing the user to pick [...]]]></description>
			<content:encoded><![CDATA[<p>In BarTor, we custom draw a lot of our controls, and we do this for a couple of reasons. First, we do this so that we can have better contol of the overall look-and-feel of the application, and we also as a framework for color theming capability (in other words, allowing the user to pick his/her own color scheme).</p>
<p>It is my goal to write a series of posts that outline some of the Android drawing classes and methods and how to use them in your own Android applications. While the focus of these posts will be on how we have used them in BarTor, we will certainly be presenting them in a way that makes the information usable for any application.</p>
<p>Stay tuned, the first post in this series is coming soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://nexsoftware.net/wp/2009/07/27/new-post-series-custom-drawing-in-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Projects Underway</title>
		<link>http://nexsoftware.net/wp/2009/07/27/projects-underway/</link>
		<comments>http://nexsoftware.net/wp/2009/07/27/projects-underway/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 15:01:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://nexsoftware.net/wp/?p=74</guid>
		<description><![CDATA[So, it might seem that we at nEx.Software are focusing on the website and shirking on development of real applications. Trust us, that is certainly not the case. We are currently working on several projects, one of which is a major upgrade for current and future users of BarTor. We have a lot of features [...]]]></description>
			<content:encoded><![CDATA[<p>So, it might seem that we at nEx.Software are focusing on the website and shirking on development of real applications. Trust us, that is certainly not the case. We are currently working on several projects, one of which is a major upgrade for current and future users of BarTor. We have a lot of features that we have been wanting to implement and feel that now is the time to do so. I will create a separate post for BarTor specifically outlineing what we intend to do and hopefully set down some goals as far as time lines.</p>
<p>Other projects we are currently working on include: A networked multiplayer game, a Virtual Keyboard, and  several others that haven&#8217;t completely taken shape yet (so we feel it is best not to mention them specifically here at this time).</p>
]]></content:encoded>
			<wfw:commentRss>http://nexsoftware.net/wp/2009/07/27/projects-underway/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Site Design</title>
		<link>http://nexsoftware.net/wp/2009/07/24/site-design/</link>
		<comments>http://nexsoftware.net/wp/2009/07/24/site-design/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 20:50:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Site]]></category>

		<guid isPermaLink="false">http://nexsoftware.net/wp/?p=69</guid>
		<description><![CDATA[Wow! Building up a site is a tough thing to do. Don&#8217;t get me wrong, using WordPress as a base certainly makes it easier than it would be otherwise, but it is still quite the undertaking. That being said, I think we are making great progress so far and have gotten a lot of the [...]]]></description>
			<content:encoded><![CDATA[<p>Wow! Building up a site is a tough thing to do. Don&#8217;t get me wrong, using WordPress as a base certainly makes it easier than it would be otherwise, but it is still quite the undertaking. That being said, I think we are making great progress so far and have gotten a lot of the main design hurdles out of the way. We will continue to develop and add content over the next few days and weeks and hope to get into regular updates on the progress of this and other projects we have underway. Stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://nexsoftware.net/wp/2009/07/24/site-design/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>My First Blog Post… Ever.</title>
		<link>http://nexsoftware.net/wp/2009/07/23/my-first-blog-post/</link>
		<comments>http://nexsoftware.net/wp/2009/07/23/my-first-blog-post/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 20:57:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nexsoftware.net/wp/?p=1</guid>
		<description><![CDATA[Alright. Let me first start off by saying that I am not a blogger. As a matter of fact, on many occasions I have flat out denied having any real use for a blog. And that is still basically true. Most times I find myself struggling to find enough to say to my friends and [...]]]></description>
			<content:encoded><![CDATA[<p>Alright. Let me first start off by saying that I am not a blogger. As a matter of fact, on many occasions I have flat out denied having any real use for a blog. And that is still basically true. Most times I find myself struggling to find enough to say to my friends and family, let alone a bunch of strangers on the Internet. Be that as it may, here I am, staring at a blank page, and writing about how I don&#8217;t think I need a blog. So, why am I here?</p>
<p>I feel it is time to try to connect better with the world in which I spend so much of my time and which has come to affect all of our lives so deeply. Yes, I am talking about the Internet, or rather, the Web. But that is merely semantics, right?</p>
<p>So, what am I going to talk about here? I don&#8217;t know&#8230; You tell me, what do you want to hear about? I have  a loose plan to write about my experiences in software development. I can make no guarantees as to what that might look like, or ultimately amount to, but I hope it will be something good. Again, I look to you for encouragement and suggestions.</p>
<p>What I can tell you is this: There will be heavy focus on Android development here. There are a number of reasons for this: First, I find it most interesting at this point in time, and I spend a lot of time doing it. Second, the Android community has been such a big help to me, and I feel it is time for me to give back to that community. Lastly, and this is somewhat selfish of me but whatever, I feel that Android provides the best opportunity for me to develop a lasting network, and help to drive my career in the way that I want it to.</p>
<p>Aside from Android I also hope to cover other technologies with which I work to varying degrees, including Microsoft .NET, Adobe Flex, and others.</p>
<p>So&#8230; Welcome. I hope you find something you can get interested in and I appreciate any comments, suggestions or anything else you might have to say.</p>
<p>Justin<br />
nEx.Software</p>
]]></content:encoded>
			<wfw:commentRss>http://nexsoftware.net/wp/2009/07/23/my-first-blog-post/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
