Posts tagged project
Android SDK from an iPhone Developer’s Perspective
Mar 3rd
I’ve already given my opinion on the Nexus One hardware. Now it’s time to look at the programming side of things. It’s time for my opinion of the Android SDK.
Let me start by stating the obvious, because I know a few people will forget this: I’m about to state my own personal and very subjective opinions about the Android SDK. That opinion may differ from yours, and that’s okay. Really. It is. The Earth will continue to spin even if you think I’m 100% wrong.
Let me also put my biases right out front: I don’t like Java. I’ve actually been using Java longer than Objective-C and have actually logged more hours and made more money using Java than I have with Objective-C, but from the moment I read Object-Oriented Programming and the Objective-C Language back in 1997 or 1998, I felt like Java was doing many things wrong. Every step in Java’s evolution has reinforced and strengthened that feeling. The approach used in NextSTEP (which evolved into Cocoa and then Cocoa Touch) matches my way of thinking. I believe in the approach. I like the approach and the language so much, in fact, that I took a substantial cut in income to be able to work with it full time. So, based on that, you should be able to see that Android’s already got one strike against it from my point of view.
I’ve been intentionally putting off writing this blog post, however, because I didn’t want to do what I’ve seen a lot of people do with the iPhone SDK and Xcode, which is to write a blog post about how it doesn’t work the way I expect it to, and therefore it’s bad. Given that I already have quite a bit of experience with the language and IDE and have now had several weeks with the Android SDK, I feel like I can give an opinion that’s not just me complaining that it’s not what I already know and like, though the fact that it does many things in a way I don’t like is certainly a factor in my opinion.
So, after spending a few weeks with Android, what do I think?
It’s actually not bad. It’s a fairly capable SDK. It has most of what you’d need and, being based on Java, there’s an awful lot of code and libraries you can draw upon. The design of the SDK is a little inconsistent (just like the Android user experience, actually). There are parts that are almost as close of a copy of the iPhone SDK as is possible given the different languages, and there are parts that seem downright alien.
There definitely is a lack of consistency in the design when compared to the iPhone SDK. Different parts of the Android SDK feel like they were written by completely different teams that didn’t necessarily communicate or even agree on the best way to do things. There are some small inconsistencies in the iPhone SDK, but there are strong guiding principles and dominant design patterns throughout the iPhone SDK that don’t have any counterpart in the Android SDK. The overall effect is that Android is a little chaotic and disjointed, but still competent.
Android also has a difficult task in that it’s designed to run on such a broad range of hardware and you can developed on a broad range of operating systems and hardware. Google has actually done quite an admirable job given how much harder the problem is when you don’t have limited hardware options, all of which you control.
One of the ways they’ve dealt with this is in the design of the emulator. You can configure the emulator to simulate different hardware with different features and different screen sizes, and you can have multiple virtual devices setup. This means you can test your app on a “virtual Nexus One”, then switch to a new virtual device and test on a “virtual Motorola Droid”. Working with the emulator is smooth, but not as smooth of an experience as the iPhone Simulator. For example, when you launch an app in the emulator, the emulator doesn’t become the front-most application, and the emulator doesn’t unlock automatically. But, the experience is still quite decent, especially in light of the additional challenges presented by it being an open platform.
Running on the device worked well, too. Surprisingly well, in fact. Again, it’s not quite as smooth of an experience as running on the iPhone. There were little annoyances, such as when you run a program on the device, the phone doesn’t wake up or unlock the way the iPhone does. But, overall, it works pretty well and without the hassle of provisioning profiles or developer certificates.
I found debugging to be somewhat painful on Android, but that may just be that I know GDB so much better than JDB/ADB (the Android Debugging Bridge) and I also know Xcode’s debugging features much better than Eclipse’s.
Although you don’t have to use Eclipse to program for Android, it does seem to be the default choice. At least, it seemed like the choice with the fewest obstacles when I was getting everything setup. Eclipse has really good integration with the Android SDK and tools. Running and debugging on the device or on the emulator are a piece of cake, and there are even tools for pushing data to the running virtual device such as location data.
But I hate Eclipse with a passion. It completely and totally doesn’t jive with the way I think or work. I find the UI inscrutable and its performance on the Mac is less than stellar. If I were going to be doing a lot of Android development, I would probably invest some time in finding an alternative IDE with good Android integration, or just work with TextMate and the command-line.
I do feel like I can code any application I need using Android. Making it look nice can be a challenge, and I spend a lot more time referencing documentation than I ever did with the iPhone SDK. Knowing one part of the Android SDK doesn’t necessarily give you any clues about how another part works and even being an experienced Java developer doesn’t give you that much of an advantage in that respect.
Designing views in the Android SDK is one of the areas that I can say without equivocation is worse than the iPhone in every single respect. Android’s approach to creating views has absolutely no redeeming value whatsoever. Designing your interface on the iPhone is easy. It’s fun. It’s intuitive. On Android, it’s fucking hell. It’s like working with the evil offspring of GridBagLayout and XML. It’s utterly horrid. But, Java has never done UI well and has never made it particularly fun so I can’t say I was surprised by this, though it did exceed my expectations by being even worse than I thought humanly possible. The whole process is counter-intuitive and time-consuming, and that’s just to make something that functions. It’s even more time-consuming and painful to make a UI that doesn’t look like ass.
But, that’s the only area so far in Android that I’ve found really horrible. Overall, it’s a capable SDK. What it’s not, however (at least for me), is fun. It’s completely missing any fun factor whatsoever. The SDK doesn’t get out of my way when I want to create. It’s a constant obstacle. Not a big or insurmountable obstacle, but a constant one. The iPhone SDK, on the other hand, is quite fun. Once I understood its approach to doing things, it became quite easy to forget about the SDK and just create my apps.
I’ve been trying to figure out exactly what the difference is; what it is that makes one fun for me and the other not, and I think I’ve got it. The Android SDK generally fails to follow one design principle that Apple does pretty damn well, which is:
Make the stuff you do all the time easy.
As a result, on Android, things you almost never do seem to be just about equally hard and time consuming as those that you do all the time.
Case in point: Because of the relatively small screen size, one of the things you do all the time in mobile apps is switch in new screens of data. On the iPhone, we accomplish that like so:
- Create an instance of the view controller class for the view we want to show
- Set properties on that view controller to provide it with the data it needs to function
- Present the view controller’s view by adding it to the view hierarchy, pushing it onto a navigation controller’s stack, or presenting it modally, each of which typically requires a single line of code
Now, on Android, it’s not quite so straightforward.
- Add an entry for the Activity (which is similar to UIViewController, but not exactly the same) to your application’s Android Manifest to let Android know the class can be launched
- Create an Intent based on the Activity’s class
- Make sure that any data you want to pass to the other Activity is serializable or in the shape of raw datatypes
- Push the information you want to pass to the other Activity as an “extra” to the Intent, serializing those that are objects
- Start the Activity
- In the Activity class, override onActivityResult and retrieve the extras you need, deserializing those that aren’t native datatypes.
- In the Activity override the onCreate() method to specify the view to be used (and don’t even get me started on designing views in Android…)
In reality, the two lists above don’t do justice to the difference in effort. This is a task that becomes second nature for the iPhone developer because it’s intuitive, and thankfully so. This is the kind of three or four line chunks of code you begin to write without even thinking about it. On Android, the stuff you need to do to accomplish the same task is scattered throughout your project files and the process is not likely to ever become second nature or easy.
Now, people who love Android will argue that Intents are powerful – more powerful than the iPhone’s approach because Intents can be used to let other programs and the OS leverage functionality from your program.
Indeed. Intents are powerful. The problem is that they give you power that you don’t need the vast majority of the time in the vast majority of applications. And they do that at the expense of making something you need to do all the time more involved and more complex than it should be (and, therefore, more likely to contain bugs). It’s indiscriminate complexity, which is not a virtue. As OpenDoc and CyberDog will gladly attest, seemingly good concepts do not always make for good implementations or user experiences, and the iPhone hasn’t suffered much for its lack of a way to share functionality between applications.
To me, much of the Android SDK (pretty much the parts that weren’t heavily influenced by the iPhone SDK) seem to be over-engineered. Much of the Android SDK features complexity seemingly for complexity’s sake. Fifteen years ago, I would have loved it because I was in my over-engineering macho-programmer phase1 and that complexity and the theoretical power it gave me would have seemed really cool.
Today, it just makes me shake my head and think Google’s engineers should stop showing off how smart they think they are and start writing elegant code that’s exactly as complex as it needs to be. They should be designing their SDK’s architecture with an awareness of the fact that that not all tasks are created equal, and simplicity is, at times, the absolute best choice.
But, despite my feelings about Android’s elegance, it absolutely is a decent mobile SDK. There’s a lot of functionality in there, and an awful lot of libraries and sample code that you can draw on to avoid re-inventing the wheel in your applications.
I don’t see myself ever doing Android work full time. I don’t see myself ever actively looking for Android SDK work that’s not part and parcel of a larger project that includes an iPhone application. But, bottom line, it’s not bad. It is, at times, inelegant, unnecessarily complex, and convoluted, but it’s young and it still has the potential to grow into a great SDK.
Will Android take off? Probably. There are a lot of Android phones coming to the market. Phone and wireless companies love free OSes because they increase their profit margins. And, once enough people start to own Android phones, people will really start writing apps for Android phones. I don’t think you’ll ever see the groundswell the way you have with the iPhone SDK where people from all walks of life with no programming experience developed a desire to learn to write software, but I do think that there will eventually be a good market for Android apps and, therefore, for Android developers.
I’m happy to leave that market to others.
1 Every programmer goes through this phase if they stick with programming long enough. If you’ve been programming for a while and don’t think you went through it, there’s a very good chance you’re still in it.
aHero v0.3
Feb 28th
this project was planned to port OpenEclair from G1 to Hero.
but I faced a lot of problems. so this ROM is to bring some good stuff from OpenEclair and CKDroid, with some modifications 
I’m not responsible if you bricked your phone. or had an accident because you were driving when playing with this ROM 


Changelog:
0.3:
-Optimized Framework and some apps
-ported Wes Garner Live wallpapers fix (Magic Smoke now works !!)
-”Maps” and “RetroClock” on /data (to ease updating)
-the default wallpaper is the one in the screenshot 
-new “Unknown caller” pic << you'll love this 
-initial design of the bootscreen .. need optimizing later 
Features:
-Fast & Stable !!
-OpenGL works great. (games work better than stock 1.5 with me)
-Gallery3D from Nexus one. ( but the rotate bug still exist )
-Live Wallpapers. (only some don’t work)
-Bluetooth file sharing!
-Full Right-to-Left languages support. tested on Arabic (thanks to Ayman)
-Google Sync
-Multi-touch (even in Gallery3D)
-Launcher2 (but really buggy!)
-Facebook sync 
Bugs:
-Camera works only on 3MP
-Gallery3D rotate thingy. I actually got used to it 
-a2dp “Bluetooth during calls” .. NOT TESTED !!
Notes:
to increase performance, use compcache in Spare Parts. it’s included 
special thanks: OpenEclair team, Exit93 (used some parts of CKDroid)
Download link (0.3) : 4shared
How to Install:
1- Do Nandroid backup
2- Wipe data (+ext partition if you used apps2sd before)
3- Flash
Remotely controlling a desktop AIR app with an Android phone
Feb 26th
AIR 2.0 has support for UDP sockets, which allows you to send and receive messages using the Universal Datagram Protocol. This means that you can communicate with other applications without the need of an extra server.
I used RemoteDroid for this demo, which is an Android app that turns your Android phone into a remote control, using your own wireless network. Originally, the app gives remote access to native applications on your computer and simulates the mouse – moving it and pressing left and right buttons, you need to download a server.
However, since AIR 2.0 supports UDP, you don’t need an extra server to make your Android phone communicate with an AIR app. In this video, I made the AIR app listen for UDP messages sent by the Android apps, to control a paperplane in a Papervision3D scene. So basically, you can turn your Android phone into a game controller.
RemoteDroid has just been open sourced, which gave me a chance to take a look at the source code of the Android app. I added the acceleration data of the phone to it (locally, I didn’t contact the owner of the project yet), and in the video you can see how I:
- control the speed of the paperplane by pitching the phone
- steer the paperplane by rolling the phone,
- zoom in and out by pressing the left ‘button’ on the phone’s touch screen
- change the camera mode to a random perspective by pressing the right ‘button’ on the touch screen
- change the camera perspective to the Third Person, First Person and default perspective by pressing the 1, 2 and 3 keyboard keys respectively.
The Papervision3D scene in the video stems from chapter 6 of the Papervision3D Essentials book.
Of course there are other apps than AIR that support UDP. For instance, I also managed to control a Unity file this way, so another video will follow soon
.
Reading Properties Files on Android (Investigation for microlog4android)
Feb 21st
Today I have investigated the possibilities to read properties files on Android. In microlog4android there is no configuration possibilities via file as it is today. The microlog4android development team feels that we need to re-write the configuration from scratch. There are many reasons for this decision, for example there is the Properties class available on Android while in Java ME we use microproperties. These are my findings about properties files on Android.
My first thought was to use the SharedPreferences class. My brain picked up this idea while using the SharedPreferences in another project. The SharedPreferences is used to read/write preferences for an Android application. The preferences are stored in an xml file that is put in the private directory structure of an application. You could edit the file by pulling it from the device or emulator using adb pull. After editing it you push it back using the adb push command. If you are using the Android Eclipse plugin you could use the file browser to do the same trick. But this is cumbersome to pull/edit/push the file and I do not really like to use XML for storing properties.
But how do we do it in microlog? The properties are stored in a properties file that is put in the JAR or by setting properties in the JAD file. Both are easily edited in Eclipse without no need to pull/push the file. The same goes for NetBeans. The properties file is bundled with the jar. Why not do the same on Android? Time to Google again! I found out that there was primarily two ways of doing this:
- Using the AssetManager
- Reading a raw resource
To test this I created a simple Android project in Eclipse and copied two microlog properties files. One was put in the /assets directory while the other was put in the /res/raw directory. The first thing that happened was that Eclipse complained about the naming of micrologV2.properties that was put in the /res/raw directory. It was kind enough to inform me that only [0..9][a..z] was allowed. Changing the capital V to a lower case v was simple. Now time to do some coding. The code for reading using the AssetManager looked like this:
Resources resources = this.getResources();
AssetManager assetManager = resources.getAssets();
// Read from the /assets directory
try {
InputStream inputStream = assetManager.open("microlog.properties");
Properties properties = new Properties();
properties.load(inputStream);
System.out.println("The properties are now loaded");
System.out.println("properties: " + properties);
} catch (IOException e) {
System.err.println("Failed to open microlog property file");
e.printStackTrace();
}
The code is dead simple and thank God for the Properties class, although microproperties would do the trick. The second way to do it is as simple as the first approach. The code looks like this:
// Read from the /res/raw directory
try {
InputStream rawResource = resources.openRawResource(R.raw.micrologv2);
Properties properties = new Properties();
properties.load(rawResource);
System.out.println("The properties are now loaded");
System.out.println("properties: " + properties);
} catch (NotFoundException e) {
System.err.println("Did not find raw resource: "+e);
} catch (IOException e) {
System.err.println("Failed to open microlog property file");
}
Notice that I omitted the code for getting the resources, since this was part of the first example. Both ways seems to be good. But what to choose? Using approach 1) has the following advantages from a microlog4android perspective:
- You are not limited to name your file with lower case letters only.
- It is possible to use a default file name if the user does not specify one.
But I probably will implement both solutions, since this gives the user a freedom to choose where to put the file. What do you think? Is there any other solutions that I have missed out?
MP3tunes Android Player: New And Improved!
Jan 28th

We have been hard at work to improve the MP3tunes Android music player. The new Google Nexus One phone offers a lot of exciting new features with a big increase in speed. The increased memory and the 1 Ghz processor make quite a difference when listening to or streaming your Locker. If you have the older version of the Android Player we recommend upgrading to the latest version. The first time that you upgrade you will have to uninstall the existing software manually. To do this just go to the Home screen, then select Settings then Applications. Choose “Manage applications” and scroll down and find the MP3tunes Mobile Locker and click on it. Here you should see an “Uninstall” button. You can install the latest stable version by going to the Android Market. Just search for “mp3tunes”. After you install the latest version, all future versions will offer you updates and upgrade automatically. (You won’t have to uninstall the previous version each time). You can submit feature requests and bug reports here.
If you like beta testing software and want to see the latest cutting-edge version of the Android MP3tunes Player you can manually install it. To do this you have to enable the manual installation of software on Android. To do this, go to the Home screen and select Settings. Then go to Applications and check the box that says: “Unknown sources: Allow install of non-Market applications”. The, grab the latest version from http://mp3tunes.com/androidclient
If you manually install the beta version you will NOT get updates automatically. Each time you install the .apk file you will have to manually uninstall the previous version. The beta testing version may offer different features that aren’t available in the stable version. But, it may also contain bugs. So, if you install the beta testing version we ask you to please report any bugs that you find to mp3tunes.android@gmail.com. If you’re a developer you can download the latest version of the source code from the Google Code site. We are always looking for Android developers who want to contribute to the project.
MobileCrunch
Jan 20th
MobileCrunch
|
|
- SlideScreen for Android borders on information overload (but the good kind)
- Video: Ericsson gets fancy with 3D maps on an Xperia X10
- Unboxing: The Jawbone Icon
- Google postpones phone launch in China amid recent quarrel
- Leaked: Alleged screenshot and details of iPhone OS 4.0
- T-Mobile loosens SIM unlock policies, travelers rejoice
|
SlideScreen for Android borders on information overload (but the good kind) Posted: 19 Jan 2010 03:26 PM PST
Let me start off by saying this: I really rather like the default Android homescreen. It’s simple, it’s functional, and above all, it’s endlessly customizable. Thanks to Google’s “do anything” approach to handling app development, end users have countless tools to trick out their phones anyway they want. That, as anyone who’s ever used MySpace knows, is a double-edged sword: the end results are usually range from the rare and wonderful to the terribly tacky. The guys over at Larva Labs have taken a different, almost Facebookian approach. Instead of allowing users to directly get their hands dirty, they completely stripped down the Android into a sparse, information-oriented design they call SlideScreen, which looks something like a mashup between WinMo 6.5 today screen and HTC’s minimalist TouchFLO style. I was given the chance to play with a nearly final build of the app, which is slated for general release within the next few days, and for you info junkies out there, this may be exactly what you’ve been looking for.
The text, while small, is totally readable, especially on a high resolution screen like the Droid’s. Full disclosure: I’ve been wearing glasses since the fourth grade, so you may want to take any vision-related judgments I make with a grain of salt, but SlideScreen was just as legible on the G1 and Cliq I tested it with. Granted, the experience wasn’t quite as smooth, but considering the underpowered hardware involved, I still came away impressed by the whole affair. SlideScreen also can be run as a separate application instead of a homescreen replacement, just in case people want a one-stop shop for their personal and public information without having to give up pretty wallpapers and such. It goes without saying that SlideScreen isn’t going to be ideal for everyone. As much as I like its style and organization, it’s certainly more information in one place than some users will feel comfortable with. Still, for those tired of looking at a stock Android install whenever they fire up their phone, SlideScreen is a solid, stylish homescreen replacement that may do them some good. UPDATE: SlideScreen has just hit the Android Market in two forms, an ad-supported free version and the unfettered Pro version going for $6.99. Crunch Network: CrunchBoard because it’s time for you to find a new Job2.0 |
|
Video: Ericsson gets fancy with 3D maps on an Xperia X10 Posted: 19 Jan 2010 02:56 PM PST
As someone who makes a living babbling about cell phones all day, I can’t complain too much about my job. With that said, the dudes over at the Ericsson Labs don’t have it too bad either. Their job, as I see it:
The latest cool thing to come out of Ericsson Labs is “3d Landscape”, a set of APIs for pushing 3D maps to web services and Android applications. It’s still super early in development — maps are only available for Stockholm, for example — but Ericsson’s engineers promise that more locations are on the way. Should we expect 3d map goodness to hit all of our favorite location-based Android apps? Probably not just yet – but if this project keeps progressing, we wouldn’t mind it one bit. Check out the video after the jump.
[Via Android Community] Crunch Network: TechCrunch obsessively profiling and reviewing new Internet products and companies |
|
Posted: 19 Jan 2010 12:06 PM PST
We knew it was coming, and we knew when it came – what we didn’t know, however, was that one was going to show up on our doorstep today. I’ll be giving Aliph’s latest-and-greatest headset Bluetooth headset a runthrough over the next few days, so expect a full review within the week. In the mean time, feel free to peruse our quick little gallery of the deboxing process after the jump.
Crunch Network: CrunchBase the free database of technology companies, people, and investors |
|
Google postpones phone launch in China amid recent quarrel Posted: 19 Jan 2010 12:00 PM PST |
|
Leaked: Alleged screenshot and details of iPhone OS 4.0 Posted: 19 Jan 2010 10:06 AM PST
I could really write this post in all of about eleven words, and it would still have the same effect. It’d go something like this “Apple, leak, new iPhone OS, screenshots, multitasking, banshees, multi-touch gestures”. However, I’m from the Internet, and we’re paid by the word* around these parts.
To make a short story long, one of Boy Genius’ “connects” (a word which he’s trying his damnedest to make trendy) came through with an alleged screenshot of iPhone OS 4.0 and some details. The screenshot is just trivial enough to seem a bit shaky, though BG says the source is trusted. What the source had to say:
As with almost every Apple rumor in the history of ever, the details are just vague enough — but also just enticing enough — to pique everyone’s interest without revealing a damn thing. Churn on, rumor mill – churn on. * Not really. Crunch Network: CrunchBoard because it’s time for you to find a new Job2.0 |
|
T-Mobile loosens SIM unlock policies, travelers rejoice Posted: 19 Jan 2010 09:18 AM PST
Traveling overseas can be such a pain – there’s just so much to remember. Did you board the dogs? Did you turn the oven off? Did you remind your fight club buddies that your basement would be unavailable that week? Did you remember to get your handset unlocked by T-mobile so you could use a different SIM card overseas?
Gettin’ ol magenta to hand over the unlock codes has always been a bit of a pain; while it’s totally within your rights (according to your contract, at least), you’ll more often than not get an operator who needs to be convinced that you fit the criteria. Well, that just got a wee bit easier. Starting this Thursday, T-mobile will be relaxing their unlock guidelines. Whereas you once had to be a T-Mobile customer for 90 days before you could request an unlock, FlexPay and PostPaid customers can both now call in for a code at just 40 days. Folks on prepaid plans will have to wait 60 days and will need to have at least 10 bucks in their account (though as long as you’ve refilled within the past 30 days, you should be set). Have you tried to unlock your T-mobile phone before? Let us know how it went in the comments below. [Via TmoNews] Crunch Network: TechCrunch obsessively profiling and reviewing new Internet products and companies |
| You are subscribed to email updates from MobileCrunch To stop receiving these emails, you may unsubscribe now. |
Email delivery powered by Google |
| Google Inc., 20 West Kinzie, Chicago IL USA 60610 | |
Android Continuos Integration: Build with maven
Jan 18th
Android Continuous Integration: Build with maven
| If you have problems seeing the images, like the icon in this box don’t blame me, it seems to be an issue when you publish to Blogspot from Google Docs. |
introduction
DroidEx: Projecting Android on the Big(ger) Screen
Jan 11th
DroidEx: Projecting Android on the Big(ger) Screen
DroidEx displays a copy of your attached Android device’s screen on your own development machine’s screen. Mostly, this is useful for presentations, as you can attach an Android device to a notebook attached to a projector, and your audience can see what is on the device. In particular, this is good for demonstrations of things that cannot readily be demonstrated via the emulator, such as GPS access or the accelerometer.
This version of DroidEx works with the Android 2.0 SDK.
Usage
This version of droidex takes an optional -s switch, with a floating-point value representing by how much to scale the image (e.g., -s 1.25 on an HVGA device will give you a 600
Android app development on Netbooks
Jan 3rd
I like the size of netbooks, their small size means that you can bring them around easily. What I didn’t anticipate was how underpowered the processor really was.
- Eclipse with ADT installed
- Mongooose HTTP server (or any web server of your choice)
- In Eclipse, right click on your project, select Android Tools->Export Signed Application
- Follow through the dialogs, if you don’t have a new keystore and key, create it now.
- Export it to a directory( say e:projectsExports)
- Copy mongoose.exe into e:projectsExports
- Run mongoose.exe
The year that was in tech history (2009):- May and June
Jan 1st
May:-
May 1st:- Microsoft announces Xbox to get full body motion sensing device add-on (Project Natal)
May 2nd:- NASA develops electronic nose to smell those cancerous cell inside the brain
May 4th:- BlackBerry Curve 83X takes over iPhone in US market
May 4th:- RIM confirms of new Storm
May 4th:- Apple/Google relationship begin investigated for antitrust violation
May 4th:- Windows 7 RC officially available for public
May 4th:- Microsoft announces to distribute Windows Vista till January of 2011 and continue to support till April 2012
May 5th:- Windows Marketplace comes with 12 commandments
May 5th:- CenTrak intros world’s smallest RFID
May 6th:- Amazon awarded design patent for Kindle v1
May 6th:- Mvix announces Nubbin, world’s smallest Wireless N USB adapter
May 6th:- Verizon introduces Mi-Fi 2200
May 7th:- Intel’s ad campaign rolls on.
May 7th:- DJ Hero announced
May 7th:- Palm Pre banner hits Best Buy
May 7th:- Spring awaits for Palm Pre launch date
May 7th:- Acer says US smartphone won’t arrive until 2010
May 8th: Vizio LCD TV becomes the most popular bargain in US
May 8th:- Mini-HDMI cable prototype shown
May 8th:- Rumor of PlayStation Phone spreads again
May 10th:- Palm’s touchstone and various accessories arrive in Best Buy
May 11th:- EU to rule against Intel in Intel and AMD feud
May 11th:- Apple rejects Bittorrent app
May 11th:- Palm Pre slowly leaks out
May 11th:- Chevy Camaro supports Zune
May 12th:- Microsoft Project “Pink” leaks out
May 12th:- First Windows Mobile 6.5 launched without announcment
May 12th:- Apple OS X 10.5.7 released
May 13th:- Intel fined $1.3 billion in AMD antitrust case
May 13th:- Microsoft Marketplace for Mobile developer opens for business
May 13th:- AMD shows off with world’s first 1 Ghz air-cooled GPU
May 14th:- Sony posts $1 billion loss, first in 14 years
May 15th:- Intel and Nokia collaborating on new Linux-based phone called oFono
May 15th:- Firefox Fennec available for WinMo in alpha form
May 17th:- Microsoft Surface gets it’s first Service Pack
May 18th:- Touchpanel Laboratories shows off touchscreen with 9 point detection
May 18th:- LG sets the worlds thinnest LCD (0.23 inches thick)
May 19th:- Microsoft’s beta My Phone service for Windows Mobile now free to all
May 19th:- Palm Pre to be officially announced on June 6th for $200
May 20th:- Mobile 2.0 beta demoed
May 20th:- Virgin America flights getting ready to be equipped with in-flight Wi-Fi
May 21st:- AT&T slowly rolls out CruiseCast in-car satellite TV service
May 22nd:- Google launches Google Chrome Browser 2.0
May 22nd:- Microsoft drops three app limit from the Windows 7 Starter Pack
May 22nd:- Microsoft announces the maximum netbook specs for Windows 7
May 23rd:- Air fuelled STAIR Battery comes into labs, boasts that it lasts ten times the normal battery
May 26th: Nokia Ovi Store live everywhere
May 26th: Windows Vista SP2 is live and ready to download
May 26th:- Zune HD becomes official
May 27th: Apple quietly updates Macbook again
May 27th: AT&T moves straight from 7,2 Mbps to LTE, skips HSPA+
May 27th: Android “Donut” demoed
May 27th: Intel debuts Core i7 unannounced
May 28th: Palm Pre announces that it syncs nicely with iTunes
May 28th: HDMI 1.4 officially detailed
May 28th: Steve Ballmer demos Zune HD
May 28th:- Google Wave unveiled, rush for invitation starts
May 29th: Windows 7 and Vista downgrade rights leaked
May 29th:- World’s largest laser open for business in California
May 31st:- Zune HD release date announced



![Screen shot 2010-01-19 at [ January 19 ] 2.30.43 PM Screen shot 2010-01-19 at [ January 19 ] 2.30.43 PM](http://androidboss.com/wp-content/uploads/2010/01/71ef4d2f9143-PM.png.png)
















