Sunday, November 21, 2010

The Droid X has a good keyboard that supports multi-touch. If you try to just install it on the Samsung Galaxy S phones (I’ve only tested the Vibrant), the keys are barley readable. The font size is very small.

I have modified the original Droid X keyboard to specify a font size that can be seen on the Galaxy S phones.

While that was fine and worked great, I didn’t really like the light color of the keyboard. So I also created a version that is skinned to look like the stock Samsung Galaxy S Keyboard.

I’ve also added alternate character selections to the “QWERTY” row. The characters are the Numeric row of a standard keyboard.

Friday, October 8, 2010

I was stuck at the Vibrant screen after applying the official OTA update from T-Mobile the other day on my Samsung Vibrant. Most people were saying it was because of not running the Stock firmware, but I did not have any real “mods” to the OS, except for a GPS fix. I have also heard people that are running full, non-rooted, Stock firmware phones and still having the same issue.

I wanted to post the steps I took to fix my problem. Your results may vary, and I am in no way, shape or form, responsible for any problems that you may have because you read this and did what worked for me. I am just posting it because it worked for me, and others.

Note that all 3 of those are from the same thread. It also wouldn't hurt for your to read that post too.

Open Odin, plug in your phone, then put it into download mode.

To expand on this because a lot of people were asking "how to put in download mode". The easiest way I found to actually do it, if you can can connect via ADB is to do the following:

# reboot download

If you can't get that to work, try how i mention below (phone off, battery out, hold vol+ & vol-), or try searching these forums for "vibrant download mode" you will find other things that "work" for people

load the PIT file in appropriate area.

load the .tar file in the PDA area.

DO NOT check 're-partition'.

Click start, let it finish.

At this point ODIN failed on me. and I got the "mobile-!-pc" image.

Now, pull your battery and unplug USB

I also took out the SIM and sdcard at this point.

bring the phone to download mode again

plug the USB back in (the phone should be off)

Hold down vol+ & vol-

Put battery back in

press power

re-run ODIN as mentioned above

Once ODIN completed successfully, it rebooted in to the Stock build. i let it do all that. then I shut it off, put the sdcard and SIM back in and booted in to recovery and restored from my Nandroid and I was back to the way it was right before I applied the update.

Friday, September 17, 2010

This is a dynamic theme that uses my Picasa gallery for the images. The wallpaper is something I threw together while I was bored the other day. It is the eye of Milla Jovovich from the the first movie.

Here are some samples of the wallpaper. There are 11 total, some with and some without the Umbrella logo in the eye.

Thursday, September 2, 2010

Voting has begun for the Community Coding Contest 2010. Please go support Droid Explorer and cast your vote for it today. There is approximately $20,719 USD worth of prizes that can be won. So please vote and have your friends vote and their friends too.

The other entry is just a short code snippet that is about 15 lines of code, counting whitespace. Droid Explorer is over 170,000 lines and used by thousands of people. Droid Explorer should have no problem winning this contest, and with your support it can.

Monday, August 23, 2010

SMS Backup was always one of the first applications I had to install on my device if I had to wipe it clean. SMS Backup is released under the Apache License, Version 2.0 and developed by Christoph Studer. Development has pretty much been stale on this application for the past year.

Sunday, August 22, 2010

A new release of Droid Explorer was published early today. It fixes the big issue with the server not being able to start. It also has some little fixes that wont even be noticed by most people. For example the extended glass area now doesn’t cause the window to move in an unexpected ways.

I will now be starting to work heavily on the 0.9.x branch. This will open Droid Explorer to many more devices beyond the rooted with busybox devices.

If you have any issues with 0.8.7.2 please report them on the droid explorer project issue tracker so they can be addressed.

I have been hard at work fixing the issue with the Droid Explorer Service. This is the service that identifies when a device is connected to the PC and shows the device in Explorer. I will have the fix in place by the end of the week and published.

I have also been working the Droid Explorer branch that will become the 0.9.x release. This will be the first version that will support non-rooted devices. The only requirement is that the device can be seen via ADB. All functionality may not be initially available to non-rooted devices, especially in the first versions of the 0.9.x releases. I will be refactoring more and more of the code to stop using custom communication via adb.exe and use the same communication methods that the DDMS uses. This will be accomplished by using MAD Bee.

I am also shooting for an update mechanism being built in to Droid Explorer in the 0.9.x releases. It is going to be a framework that will use an Atom feed to get available updates. It will allow multiple update locations, to allow plugins to specify their own update feed source. Updates can define requirements, minimum/maximum version, and how to “install” the updates. But that is a bit off from being incorporated, it may not make it in until a few releases in to the 0.9.x releases.

Tuesday, August 10, 2010

I love Notepad2. It is the “basic” text editor that should ship in Windows. It is one of the first things I download on a new system, I replace notepad with it, then I add the context menu to open any file in notepad2. I have recently moved to a dark color theme for all my text editors and base them all off the Coding Instinct Visual Studio color scheme. Here is a settings file for Notepad2 that is based on the Coding Instinct Visual Studio color scheme.

I have changed all the supported languages in the configuration, but I have not tested them all. Some may not be 100% correct, or there may be a color that just doesn’t look right on the dark background.

Minor update to Twimager was released today. This update fixes issues with Twimager showing as a viewer for other types of images that were not supported. It also adds support for some other types of images, like ones on the device that you open with an application like Astro, for example. Also support for MMS images was added. Now you can click on the image in your MMS message and open the image right in twimager.

As always, Twimager is available for $0.99 on the Android Market, or you can get the limited version for free.

Monday, August 9, 2010

I have been a huge fan of True Launch Bar for years. I do not have anything to do with the product, nor do I get anything in return for “plugging” it. I use it a lot less now with Windows 7, but I still use it to put a command line right in the task bar. TLB is a highly customizable taskbar replacement for Quick Launch.

TLB offers a wide assortment of plug-ins, plus an SDK for developers. You can get TLB right now for $13.93, that is 30% off the normal price, and well worth it.

Now that you know what TLB is, I have created a simple little skin for the Command Line plug-in that gives it a Windows 7 look. Download the skin, then extract it to the “<TrueLaunchBarInstall>\plugins\cmdline\skins” directory.

Now if it were possible to update existing skins on the website. I want to lighten or even remove the dark border around the border so it looks better on lighter backgrounds. The zip file for the skin contains the skin image, but also contains the Paint.NET file so you can remove it if you wanted to.

Friday, August 6, 2010

A new release of Twimager is available on the market for purchase. This release adds full support for image caching, whether its the “thumb” view or the full size, zoomable image. Thumbnail images are now also loaded for the “thumb” view, for sites that support them.

The cache uses the external storage device, if available, and it can be cleared in the Preferences.

The preference screen was also slightly changed. The sections are now grouped together.

Thursday, August 5, 2010

Droid Explorer has been increasing in popularity of the past year. Total downloads passing 85,000, page views at about 340,000 and since the projects first release in August ‘09.

The “Drop Off” is for a time span that CodePlex has not yet calculated the data.

The latest release has had over 1,600 downloads in about 3 days. Droid Explorer, in the last 7 days (based on when CodePlex does their counts), has had 4,440 downloads. This puts Droid Explorer in the #14 spot for most downloaded projects on CodePlex. About 300 away from the “patterns & practices – Enterprise Library”, and 600 from ASP.NET projects, like ASP.NET MVC.

Wednesday, July 14, 2010

I uploaded a minor update to Twimager and Twimager Lite today. It addresses the issue that was reported that Twimager no longer works in Android 2.2 (Froyo). The only other change is in the Preferences screen. I added a small description on how Twimager works, since I have seen some negative comments in the Market stating that the app “Does except display application information”.

The application is now available on the Market for $0.99 or the Lite version for Free. Use scan the QR Code to the right for a direct link to the application on the Market.

Tuesday, July 13, 2010

A new version of Droid Explorer was put up for download late last night. This version was initially just a maintenance release and consisted of more code refactoring. But it has since turned in to an actual release since some of the newly added features could be somewhat buggy.

One of the changes, code wise, is that all projects have been upgraded to Visual Studio 2010. Along with that, the WiX installer project now uses WiX 3.5.

I fixed the bug where files would no longer open on your system when double clicked. This may not have been an issue with all ROMs, but with CyanogenMod, it was. It seemed that 95% of the files on the system are marked as “Executable” in CyanogenMod now.

The biggest change is that you can now specify that you want to use an existing Android SDK, instead of having Droid Explorer download a trimmed down version of the SDK. This is really more for the advanced setup, and if you don’t have the SDK already setup, it is best you let Droid Explorer set it up for you.

Once you select that you want to use your existing SDK, during the install, you will be prompted for the path of the SDK. If the installer is unable to find the necessary components in the selected directory, you will be prompted with a message stating that it is not a valid SDK directory. Make sure you are selecting the root of your Android SDK.

Tuesday, July 6, 2010

Boot Animation Preview is a tool that allows you to preview a boot animation on your PC without having to install it on the device and reboot just to see it. It also has the ability to create an animation GIF image from the animation to be used on a website or forum for showing the visitors a preview of the animation. If ADB is in the system path, then it can also apply the image to the attached device.

I’ve uploaded a new version of the Boot Animation Preview this morning. It fixes an issue of not loading boot animations that use Jpeg’s. This is the only change in the release.

The application requires Microsoft .NET Framework 3.5 SP1 be installed on the machine. It also requires ADB be in the Path environment variable if you want to set the boot animation to a connected Android device.

Monday, July 5, 2010

Droid Explorer is the first entry submitted to the Community Coding Contest 2010. Projects can enter until September 1st, 2010 and the winners have a chance to win prizes totaling over $18,000. I will need your help when voting commences September 2nd 2010, as the winner is selected by the number of votes it receives from the actual community.

Friday, June 25, 2010

The original Device in ddms has a dictionary for mount points, but it only has the 3 hard coded m ount points. So if a rooted device, with busybox is connected, then it will pull all the mount points on the system.

Notice how the /system mount is read-only. That is because I also have a method to set the mount point ReadWrite/ReadOnly. Again, this will really only be useful for rooted devices, but it also gives the ability to check what the current “access” of the mount is as well. So Droid Explorer can check if the mount is read-only before doing a file operation, like a delete or create, and it can change the mount to read-write if needed (and if it is "enabled" by the user).

MADB also can transfer files better then regular adb. The ddms library does not handle symlinks, but MADB does. So if you try to copy a symlink, it will resolve it and copy over the original, but still name it what the symlink is.

Pulling multiple files from the device can also easily allow developers to show the total progress for the transfer. For the unit tests, I created a simple ISyncProgressMonitor that writes how many bytes were transferred, out of the total bytes, plus how many bytes are remaining. Here is a sample output, with some data trimmed for space, of a pull of /system/app

Thursday, June 24, 2010

I have gotten a few more key parts of the Managed Android Debug Bridge done. The SyncService has some important methods completed. I have been able to successfully pull a single file from a device, and push a single file to a device. Still not working is the ability to push and pull multiple files, but that is next.

Even though this is a port of the DDMS library, I have taken it upon myself to make some needed changes to some components. For example, when pulling a file, here is the original ddmslib code:

public SyncResult pullFile(String remoteFilepath, String localFilename, ISyncProgressMonitor monitor) { monitor.start(0); //TODO: use the {@link FileListingService} to get the file size.

Notice the “TODO”, this means that when this method is used to pull a file, there is no “notifications” to the ISyncProgressMonitor since the total bytes is set to 0 in the monitor.start. I took the 5 minutes to actually write the method in the FileListingService that can take a string path, and find the FileEntry object, or it will throw a FileNotFoundException. Once we have the FileEntry, we can determine how much data is going to be transfered. Here is the same method, but in MADB.

Another thing that I thought should be modified was the Regex used for the FileListingService. In the original version, it only supports the stock Android ls command. I have modified it to support the stock ls, plus it supports busybox ls as well. This was a selfish act, since it helps me closer to my goal of not requiring busybox in order for Droid Explorer to work.

Wednesday, June 23, 2010

The Managed Android Debug Bridge is coming along. I did some work on the FileListingService, but messed up the checkin and its now missing some files in the project. This will be fixed tomorrow. The FileListingService is the component that is responsible for ADB request that require file information. At the core, it executes an “ls –l” on the device and parses the return data for the information.

I have made some modifications to the Regex used to parse the return data so that both stock “ls” and “busybox ls” are supported. This means that Droid Explorer will be able to perform some operations on non-rooted devices once MADB is integrated in. The good news is, Droid Explorer + MADB will also be able to detect if busybox is installed on the device. It will also be able to display more detailed information, even more then ADB, when pushing or pulling a file to / from the device.

MADB gives more information to developers when executing remote commands when the file does not exist, or even if an “ls” is attempted on a directory does not exist. It does so by throwing a FileNotFoundException. Otherwise, the specified IShellOutputReceiver will be the way developers will know what is happening in the remote command.

Monday, June 21, 2010

MADB is a port of the ddms java library that the ddms uses. This allows communication with the ADB server via TCP and gives more flexibility to developers then calling the adb binary directly. For starters, MADB can request the FrameBuffer, which is what is used to get a screenshot of the device. This is different then pulling /dev/graphics/fb0 because:

I have a very small portion of it implemented. Currently, I have the GetFrameBuffer, ExecuteRemoteCommand, Reboot & GetDevices implemented. I’ve actually gone a little further with ExecuteRemoteCommand then the original library, as it checks for the error message that would be displayed if the binary was not found and the method throws a FileNotFoundException instead of just handing the data off to the IShellOutputReceiver.

The goal of MADB is to mimic the functionality that is available via the ddms library and make it available to .NET projects. This project will also be used in Droid Explorer once it has the needed functionality that Droid Explorer requires.

Saturday, June 19, 2010

I have recently moved to a dark color theme for all my code editors. It is much easier on the eyes. But I recently came across an issue that I can’t figure out how to correct and was hoping that someone will have an answer.When the method info box pops up this is what it looks likeNow obviously this is not very useful as you can only read “void” and even that is hard to read. I either need to be able to change the background color of the popup window or the color of the text that is displayed in there. If anyone is interested, the color theme I am using is based on “Coding Instinct” found on StudioStyles.Here is my modified version, just has some tweaks that were not in it when I started using it, like the line numbers background was white and when you hover a collapsible block it was white, things like that.

Seems this problem is caused by Visual Studio 2010 Pro Power Tools. It enables the code highlighting in the to the parameter help. Email your congressman to see if we can get a way to fix or disable this.

Update 2:

This can be fixed. In the Options->Environment->Fonts and Colors set Signature Help Tooltip Background to a darker color of your choice.

started working on the ability to use existing sdk (not yet an option, but soon)

One of the biggest changes is the communicating with adb over TCP. I started to port the code that the ddmslib uses to directly communicate with adb. This is done over a TCP socket. The current reason for this was specifically for the screenshot plugin. Previous versions only took screenshots of devices that had a screen resolution of 320x480. It, like all the other screenshot applications for android pulled the data from the framebuffer located at /dev/graphics/fb0. The problem with pulling this file with adb pull /dev/graphics/fb0 ./fb0 is the framebuffer contains 2+ frames of data because android implements double buffering. So to display 1 image, applications pull down data for 2+ images. This takes some time to perform, not to mention the time it takes to then render the image from the data. Also a problem is you have to know the screen resolution of the device your reading the buffer for, otherwise you will end up with a garbled image.

Using the TCP method eliminates these problems. First, it only sends one frame of data, so we are not pulling extra, unused bytes, so it speeds up the transfer time. It also sends back the screen resolution of the image, plus other information like the bpp, argb lengths and offsets.

My plan is to move everything that Droid Explorer uses the adb.exe commands for over to TCP eventually. The SDK is still required to be on the machine, but it gives more control to Droid Explorer, and in this case, speeds things up.

I have not blogged in a long time, since I took down my old website that had my blog on it about a year ago. I will now use blogger as my blog host as I do not feel like maintaining the software to blog.

I am an Application/Web Developer at UPS in Bedford Park, IL for my day job. In the evenings I am an Android enthusiast, and write applications for the Android platform, Web, and Windows.

What should you expect from this blog? Honestly, it will depend on my mood, schedule and where the stars are aligned. I could post a detailed post on a new android application I released, it could be a short post about a new build of Droid Explorer, or I could post how pissed I am that my sd-card stopped working.

How often will I post? When ever I have something I think is worth posting. I could post 30 times in one day, but not post again for 2 months.

Do I always ask myself questions and then answer them? No, now move on…

The Droid X has a good keyboard that supports multi-touch. If you try to just install it on the Samsung Galaxy S phones (I’ve only tested the Vibrant), the keys are barley readable. The font size is very small.

I have modified the original Droid X keyboard to specify a font size that can be seen on the Galaxy S phones.

While that was fine and worked great, I didn’t really like the light color of the keyboard. So I also created a version that is skinned to look like the stock Samsung Galaxy S Keyboard.

I’ve also added alternate character selections to the “QWERTY” row. The characters are the Numeric row of a standard keyboard.

I was stuck at the Vibrant screen after applying the official OTA update from T-Mobile the other day on my Samsung Vibrant. Most people were saying it was because of not running the Stock firmware, but I did not have any real “mods” to the OS, except for a GPS fix. I have also heard people that are running full, non-rooted, Stock firmware phones and still having the same issue.

I wanted to post the steps I took to fix my problem. Your results may vary, and I am in no way, shape or form, responsible for any problems that you may have because you read this and did what worked for me. I am just posting it because it worked for me, and others.

Note that all 3 of those are from the same thread. It also wouldn't hurt for your to read that post too.

Open Odin, plug in your phone, then put it into download mode.

To expand on this because a lot of people were asking "how to put in download mode". The easiest way I found to actually do it, if you can can connect via ADB is to do the following:

# reboot download

If you can't get that to work, try how i mention below (phone off, battery out, hold vol+ & vol-), or try searching these forums for "vibrant download mode" you will find other things that "work" for people

load the PIT file in appropriate area.

load the .tar file in the PDA area.

DO NOT check 're-partition'.

Click start, let it finish.

At this point ODIN failed on me. and I got the "mobile-!-pc" image.

Now, pull your battery and unplug USB

I also took out the SIM and sdcard at this point.

bring the phone to download mode again

plug the USB back in (the phone should be off)

Hold down vol+ & vol-

Put battery back in

press power

re-run ODIN as mentioned above

Once ODIN completed successfully, it rebooted in to the Stock build. i let it do all that. then I shut it off, put the sdcard and SIM back in and booted in to recovery and restored from my Nandroid and I was back to the way it was right before I applied the update.

This is a dynamic theme that uses my Picasa gallery for the images. The wallpaper is something I threw together while I was bored the other day. It is the eye of Milla Jovovich from the the first movie.

Here are some samples of the wallpaper. There are 11 total, some with and some without the Umbrella logo in the eye.

Voting has begun for the Community Coding Contest 2010. Please go support Droid Explorer and cast your vote for it today. There is approximately $20,719 USD worth of prizes that can be won. So please vote and have your friends vote and their friends too.

The other entry is just a short code snippet that is about 15 lines of code, counting whitespace. Droid Explorer is over 170,000 lines and used by thousands of people. Droid Explorer should have no problem winning this contest, and with your support it can.

SMS Backup was always one of the first applications I had to install on my device if I had to wipe it clean. SMS Backup is released under the Apache License, Version 2.0 and developed by Christoph Studer. Development has pretty much been stale on this application for the past year.

A new release of Droid Explorer was published early today. It fixes the big issue with the server not being able to start. It also has some little fixes that wont even be noticed by most people. For example the extended glass area now doesn’t cause the window to move in an unexpected ways.

I will now be starting to work heavily on the 0.9.x branch. This will open Droid Explorer to many more devices beyond the rooted with busybox devices.

If you have any issues with 0.8.7.2 please report them on the droid explorer project issue tracker so they can be addressed.

I have been hard at work fixing the issue with the Droid Explorer Service. This is the service that identifies when a device is connected to the PC and shows the device in Explorer. I will have the fix in place by the end of the week and published.

I have also been working the Droid Explorer branch that will become the 0.9.x release. This will be the first version that will support non-rooted devices. The only requirement is that the device can be seen via ADB. All functionality may not be initially available to non-rooted devices, especially in the first versions of the 0.9.x releases. I will be refactoring more and more of the code to stop using custom communication via adb.exe and use the same communication methods that the DDMS uses. This will be accomplished by using MAD Bee.

I am also shooting for an update mechanism being built in to Droid Explorer in the 0.9.x releases. It is going to be a framework that will use an Atom feed to get available updates. It will allow multiple update locations, to allow plugins to specify their own update feed source. Updates can define requirements, minimum/maximum version, and how to “install” the updates. But that is a bit off from being incorporated, it may not make it in until a few releases in to the 0.9.x releases.

I love Notepad2. It is the “basic” text editor that should ship in Windows. It is one of the first things I download on a new system, I replace notepad with it, then I add the context menu to open any file in notepad2. I have recently moved to a dark color theme for all my text editors and base them all off the Coding Instinct Visual Studio color scheme. Here is a settings file for Notepad2 that is based on the Coding Instinct Visual Studio color scheme.

I have changed all the supported languages in the configuration, but I have not tested them all. Some may not be 100% correct, or there may be a color that just doesn’t look right on the dark background.

Minor update to Twimager was released today. This update fixes issues with Twimager showing as a viewer for other types of images that were not supported. It also adds support for some other types of images, like ones on the device that you open with an application like Astro, for example. Also support for MMS images was added. Now you can click on the image in your MMS message and open the image right in twimager.

As always, Twimager is available for $0.99 on the Android Market, or you can get the limited version for free.

I have been a huge fan of True Launch Bar for years. I do not have anything to do with the product, nor do I get anything in return for “plugging” it. I use it a lot less now with Windows 7, but I still use it to put a command line right in the task bar. TLB is a highly customizable taskbar replacement for Quick Launch.

TLB offers a wide assortment of plug-ins, plus an SDK for developers. You can get TLB right now for $13.93, that is 30% off the normal price, and well worth it.

Now that you know what TLB is, I have created a simple little skin for the Command Line plug-in that gives it a Windows 7 look. Download the skin, then extract it to the “<TrueLaunchBarInstall>\plugins\cmdline\skins” directory.

Now if it were possible to update existing skins on the website. I want to lighten or even remove the dark border around the border so it looks better on lighter backgrounds. The zip file for the skin contains the skin image, but also contains the Paint.NET file so you can remove it if you wanted to.

A new release of Twimager is available on the market for purchase. This release adds full support for image caching, whether its the “thumb” view or the full size, zoomable image. Thumbnail images are now also loaded for the “thumb” view, for sites that support them.

The cache uses the external storage device, if available, and it can be cleared in the Preferences.

The preference screen was also slightly changed. The sections are now grouped together.

Droid Explorer has been increasing in popularity of the past year. Total downloads passing 85,000, page views at about 340,000 and since the projects first release in August ‘09.

The “Drop Off” is for a time span that CodePlex has not yet calculated the data.

The latest release has had over 1,600 downloads in about 3 days. Droid Explorer, in the last 7 days (based on when CodePlex does their counts), has had 4,440 downloads. This puts Droid Explorer in the #14 spot for most downloaded projects on CodePlex. About 300 away from the “patterns & practices – Enterprise Library”, and 600 from ASP.NET projects, like ASP.NET MVC.

I uploaded a minor update to Twimager and Twimager Lite today. It addresses the issue that was reported that Twimager no longer works in Android 2.2 (Froyo). The only other change is in the Preferences screen. I added a small description on how Twimager works, since I have seen some negative comments in the Market stating that the app “Does except display application information”.

The application is now available on the Market for $0.99 or the Lite version for Free. Use scan the QR Code to the right for a direct link to the application on the Market.

A new version of Droid Explorer was put up for download late last night. This version was initially just a maintenance release and consisted of more code refactoring. But it has since turned in to an actual release since some of the newly added features could be somewhat buggy.

One of the changes, code wise, is that all projects have been upgraded to Visual Studio 2010. Along with that, the WiX installer project now uses WiX 3.5.

I fixed the bug where files would no longer open on your system when double clicked. This may not have been an issue with all ROMs, but with CyanogenMod, it was. It seemed that 95% of the files on the system are marked as “Executable” in CyanogenMod now.

The biggest change is that you can now specify that you want to use an existing Android SDK, instead of having Droid Explorer download a trimmed down version of the SDK. This is really more for the advanced setup, and if you don’t have the SDK already setup, it is best you let Droid Explorer set it up for you.

Once you select that you want to use your existing SDK, during the install, you will be prompted for the path of the SDK. If the installer is unable to find the necessary components in the selected directory, you will be prompted with a message stating that it is not a valid SDK directory. Make sure you are selecting the root of your Android SDK.

Boot Animation Preview is a tool that allows you to preview a boot animation on your PC without having to install it on the device and reboot just to see it. It also has the ability to create an animation GIF image from the animation to be used on a website or forum for showing the visitors a preview of the animation. If ADB is in the system path, then it can also apply the image to the attached device.

I’ve uploaded a new version of the Boot Animation Preview this morning. It fixes an issue of not loading boot animations that use Jpeg’s. This is the only change in the release.

The application requires Microsoft .NET Framework 3.5 SP1 be installed on the machine. It also requires ADB be in the Path environment variable if you want to set the boot animation to a connected Android device.

Droid Explorer is the first entry submitted to the Community Coding Contest 2010. Projects can enter until September 1st, 2010 and the winners have a chance to win prizes totaling over $18,000. I will need your help when voting commences September 2nd 2010, as the winner is selected by the number of votes it receives from the actual community.

The original Device in ddms has a dictionary for mount points, but it only has the 3 hard coded m ount points. So if a rooted device, with busybox is connected, then it will pull all the mount points on the system.

Notice how the /system mount is read-only. That is because I also have a method to set the mount point ReadWrite/ReadOnly. Again, this will really only be useful for rooted devices, but it also gives the ability to check what the current “access” of the mount is as well. So Droid Explorer can check if the mount is read-only before doing a file operation, like a delete or create, and it can change the mount to read-write if needed (and if it is "enabled" by the user).

MADB also can transfer files better then regular adb. The ddms library does not handle symlinks, but MADB does. So if you try to copy a symlink, it will resolve it and copy over the original, but still name it what the symlink is.

Pulling multiple files from the device can also easily allow developers to show the total progress for the transfer. For the unit tests, I created a simple ISyncProgressMonitor that writes how many bytes were transferred, out of the total bytes, plus how many bytes are remaining. Here is a sample output, with some data trimmed for space, of a pull of /system/app

I have gotten a few more key parts of the Managed Android Debug Bridge done. The SyncService has some important methods completed. I have been able to successfully pull a single file from a device, and push a single file to a device. Still not working is the ability to push and pull multiple files, but that is next.

Even though this is a port of the DDMS library, I have taken it upon myself to make some needed changes to some components. For example, when pulling a file, here is the original ddmslib code:

public SyncResult pullFile(String remoteFilepath, String localFilename, ISyncProgressMonitor monitor) { monitor.start(0); //TODO: use the {@link FileListingService} to get the file size.

Notice the “TODO”, this means that when this method is used to pull a file, there is no “notifications” to the ISyncProgressMonitor since the total bytes is set to 0 in the monitor.start. I took the 5 minutes to actually write the method in the FileListingService that can take a string path, and find the FileEntry object, or it will throw a FileNotFoundException. Once we have the FileEntry, we can determine how much data is going to be transfered. Here is the same method, but in MADB.

Another thing that I thought should be modified was the Regex used for the FileListingService. In the original version, it only supports the stock Android ls command. I have modified it to support the stock ls, plus it supports busybox ls as well. This was a selfish act, since it helps me closer to my goal of not requiring busybox in order for Droid Explorer to work.

The Managed Android Debug Bridge is coming along. I did some work on the FileListingService, but messed up the checkin and its now missing some files in the project. This will be fixed tomorrow. The FileListingService is the component that is responsible for ADB request that require file information. At the core, it executes an “ls –l” on the device and parses the return data for the information.

I have made some modifications to the Regex used to parse the return data so that both stock “ls” and “busybox ls” are supported. This means that Droid Explorer will be able to perform some operations on non-rooted devices once MADB is integrated in. The good news is, Droid Explorer + MADB will also be able to detect if busybox is installed on the device. It will also be able to display more detailed information, even more then ADB, when pushing or pulling a file to / from the device.

MADB gives more information to developers when executing remote commands when the file does not exist, or even if an “ls” is attempted on a directory does not exist. It does so by throwing a FileNotFoundException. Otherwise, the specified IShellOutputReceiver will be the way developers will know what is happening in the remote command.

MADB is a port of the ddms java library that the ddms uses. This allows communication with the ADB server via TCP and gives more flexibility to developers then calling the adb binary directly. For starters, MADB can request the FrameBuffer, which is what is used to get a screenshot of the device. This is different then pulling /dev/graphics/fb0 because:

I have a very small portion of it implemented. Currently, I have the GetFrameBuffer, ExecuteRemoteCommand, Reboot & GetDevices implemented. I’ve actually gone a little further with ExecuteRemoteCommand then the original library, as it checks for the error message that would be displayed if the binary was not found and the method throws a FileNotFoundException instead of just handing the data off to the IShellOutputReceiver.

The goal of MADB is to mimic the functionality that is available via the ddms library and make it available to .NET projects. This project will also be used in Droid Explorer once it has the needed functionality that Droid Explorer requires.

I have recently moved to a dark color theme for all my code editors. It is much easier on the eyes. But I recently came across an issue that I can’t figure out how to correct and was hoping that someone will have an answer.When the method info box pops up this is what it looks likeNow obviously this is not very useful as you can only read “void” and even that is hard to read. I either need to be able to change the background color of the popup window or the color of the text that is displayed in there. If anyone is interested, the color theme I am using is based on “Coding Instinct” found on StudioStyles.Here is my modified version, just has some tweaks that were not in it when I started using it, like the line numbers background was white and when you hover a collapsible block it was white, things like that.

Seems this problem is caused by Visual Studio 2010 Pro Power Tools. It enables the code highlighting in the to the parameter help. Email your congressman to see if we can get a way to fix or disable this.

Update 2:

This can be fixed. In the Options->Environment->Fonts and Colors set Signature Help Tooltip Background to a darker color of your choice.

started working on the ability to use existing sdk (not yet an option, but soon)

One of the biggest changes is the communicating with adb over TCP. I started to port the code that the ddmslib uses to directly communicate with adb. This is done over a TCP socket. The current reason for this was specifically for the screenshot plugin. Previous versions only took screenshots of devices that had a screen resolution of 320x480. It, like all the other screenshot applications for android pulled the data from the framebuffer located at /dev/graphics/fb0. The problem with pulling this file with adb pull /dev/graphics/fb0 ./fb0 is the framebuffer contains 2+ frames of data because android implements double buffering. So to display 1 image, applications pull down data for 2+ images. This takes some time to perform, not to mention the time it takes to then render the image from the data. Also a problem is you have to know the screen resolution of the device your reading the buffer for, otherwise you will end up with a garbled image.

Using the TCP method eliminates these problems. First, it only sends one frame of data, so we are not pulling extra, unused bytes, so it speeds up the transfer time. It also sends back the screen resolution of the image, plus other information like the bpp, argb lengths and offsets.

My plan is to move everything that Droid Explorer uses the adb.exe commands for over to TCP eventually. The SDK is still required to be on the machine, but it gives more control to Droid Explorer, and in this case, speeds things up.

I have not blogged in a long time, since I took down my old website that had my blog on it about a year ago. I will now use blogger as my blog host as I do not feel like maintaining the software to blog.

I am an Application/Web Developer at UPS in Bedford Park, IL for my day job. In the evenings I am an Android enthusiast, and write applications for the Android platform, Web, and Windows.

What should you expect from this blog? Honestly, it will depend on my mood, schedule and where the stars are aligned. I could post a detailed post on a new android application I released, it could be a short post about a new build of Droid Explorer, or I could post how pissed I am that my sd-card stopped working.

How often will I post? When ever I have something I think is worth posting. I could post 30 times in one day, but not post again for 2 months.

Do I always ask myself questions and then answer them? No, now move on…