zxing documentation, “the file dx.jar was not loaded from the sdk folder!”, conversion to dalvik format failed with error 1, zxing into android functionality,


We all know that android sdk comes complete with java sdk build in. This sdk is light weight and customized for use by the dalvik engine. Now, if we also add java jar’s along with the android app, obviously the android system will have trouble converting that java jar to dalvik. Hence the “conversion to dalvik” issue.

So now that you know what happens, lets figure out why it happens.

The zxing library today does not allow a clean way to include the library into your project. Ideally they should provide a android_zxing.jar file that we can just include and freak out. But, we need to download the source, take the relevant folders import it into a new project and add that project as a dependent project to our customized app.

Now, when you do the import a whole lotta things happen. Each directory that you import from the zxing download has androidmanifest.xml, default.properties.. So things get over written again and again and again. So once you have imported the directories, close the project. Delete it, reimport the “just imported project” and try. Should work.

Refer to my blog (https://mcondev.wordpress.com/2011/03/02/zxing-into-android-for-barcode-reading-functionality-original-project-100mb-imported-3mb/) on this for the import process.

Dont forget to import the “android” folder last.

Have fun. If you get issues, post comments, I’ll try to respond.

Continuous Collaboration with Mingle, SVN, Email and Wiki – Part 1 (Forming)


Agile has been around for sometime now. Most use it as a buzz word, not benefiting from its core principles people maturity and and need to extreme communication. This development life cycle is initiated by developers essentially. Think about it. All that CMMi gives you, is a top bottom approach. And since the acceptance of the young generation to agile is just so high, CMMi has to give way. So they just “accept” what you say, and today CMMi is just a certificate with very less value with the young generation.

Obviously just like PMI, CMMi is struggling to prove its point today. That processes are important and if not done the CMMi or PMI way, will fall flat. The fact remains that organizations with PMI and CMMi are falling flat. They no longer do the amount of software development they use to. They now focus their business on “servicing” software products already developed. Basically they could not keep up with the pace. Not their fault in my opinion, just that the pace is too fast for anyone to keep up.

It needs you to think that you are “worthless”, and start studying again. Pick up your database book, design patterns book and programming language book and start writing some code, debuggers, watch’s. Get your head out of excel sheets, ppts and mpp’s :). It is when you dont get your head out and start studying, you realize that you cannot keep up with the pace. And start believing that without CMMi and PMI projects cannot run. Until you get a rude wake up call by a young engineer (but considering the youngsters today, I dont think they care about wasting their time with you). So guys/gals wake up. Get your head out, and into the right things.

So what has this got to do with Continuous Collaboration. Well, everything.

The above was a wake up call for you to realize that today running projects is about collaboration. As a manager if you frequently think, “if the Iteration Manager/Business Analyst will do this, what will I do”, its time for you to wake up (read the first few para’s).

You have to do some real contribution. Martin Flower says it. Write some code (gain respect of your fellow’s). Create a framework that can replace and refactor some dirty code. Reproduce some bugs, play with the interim builds of the product and give valuable feedback. Dont need your tech leads to sit thru all meetings to give feedback to UX. In other words do some real contribution. Ask relevant questions, effectively communicating with lesser words and more diagrams. Do some tech talks. Show them that analytical ability only increases with time and age, and not the other way around.

Is using Activity for every UI a good idea ?


Absolutely. Think about it. It is the basic construct of Android. The OS will optimize all your Activity’s. The other choice you have is one Activity and multiple Views. Just change the view as you navigate across your application. But you will have to manage the back button stack.

THATS LAME!!! You are a java developer if you choose option 2, not a Android developer. Dont waste your time managing stuff that the framework does well. Develop using one Activity for one UI screen, and navigate using Intents.

Use the UIThread judiciously, and multi task the business logic.

Create a layer for your the data. Design using some good patterns. And DONT use only MVC since you know it, pick up the patterns book and study :).

Use Junit for your testing. I use Junit 4, works well.

Hidden secret codes on Android Phones


Codes can be used to read and set/reset stuff on your phone.

Used to get some information about the phone and battery
Phone, Battery, Battery history, Usage statistics

Reset phone to factory data.
– Remove
* Google account settings stored in your phone
* System and application data and settings
* Downloaded applications
– NOT remove
* Current system software and bundled applications SD card files e.g. photos, music files, etc.

You will get a prompt asking you to click on “Reset phone”. You kinda get a chance to cancel your operation.

Format to factory settings,
– Remote
* all files and settings
* internal memory storage.
– Reinstall the phone firmware
– There is no way to cancel the operation unless you remove the battery from the phone.

Get information about phone camera.
– Update camera firmware in image WARNING: Never use this option, since your phone camera will stop working (you’ll need to take your phone to service center to reinstall camera firmware).
– Update camera firmware in SD card
– Get camera firmware version
– Get firmware update count

Used to change the “End Call / Power” button action in your phone. Be default, if you long press the button, it shows a screen asking you to select any option from Silent mode, Airplane mode and Power off. You can change this action using this code. You can enable direct power off on this button so you don’t need to waste your time in selecting the option.

Opens a File copy screen where you can backup your media files e.g. Images, Sound, Video and Voice memo.

Used to enter into Service mode. You can run various tests and change settings in the service mode. WLAN,

GPS and Bluetooth Test Codes:
*#*#232339#*#* OR *#*#526#*#* OR *#*#528#*#* – WLAN test (Use “Menu” button to start various tests)
*#*#232338#*#* – Shows WiFi MAC address
*#*#1472365#*#* – GPS test
*#*#1575#*#* – Another GPS test
*#*#232331#*#* – Bluetooth test
*#*#232337#*# – Shows Bluetooth device address
*#*#8255#*#* This code can be used to launch GTalk Service Monitor. Codes to get Firmware version information: *#*#4986*2650468#*#* – PDA, Phone, H/W, RFCallDate
*#*#1234#*#* – PDA and Phone
*#*#1111#*#* – FTA SW Version
*#*#2222#*#* – FTA HW Version
*#*#44336#*#* – PDA, Phone, CSC, Build Time, Changelist number

Codes to launch various Factory Tests:
*#*#0283#*#* – Packet Loopback
*#*#0*#*#* – LCD test
*#*#0673#*#* OR *#*#0289#*#* – Melody test
*#*#0842#*#* – Device test (Vibration test and BackLight test)
*#*#2663#*#* – Touch screen version
*#*#2664#*#* – Touch screen test
*#*#0588#*#* – Proximity sensor test
*#*#3264#*#* – RAM version NOTE: All above codes have been checked on Google Android phone Samsung Galaxy I7500 only but they should also work in other Google Android phones.