Tutorials

Install Google Services, Superuser, Busybox in Android Emulator

Posted on

This post will help you to install the required Google Play Store, Superuser and Busybox binary in your Emulator.

Download the required files from the following URL
GOOGLE SERVICEShttp://www.mediafire.com/download/7cps3k7qgyjcpsp/Google%20Services.zip
SUPERUSER BINARYhttp://www.mediafire.com/download/bgy1et6e3vytge7/Superuser%2520binaries.zip
BUSYBOX BINARYhttp://www.mediafire.com/download/mye5qcejxk54e6v/Busybox%2520binary.zip

The following urls contains a zip file which after extracting would find “install.bat” file. This bat file contains the necessary scripts for installing the corresponding apps and binaries.

The commands present in script file are given below.

1:Installing Google Play Store

adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
adb shell chmod 777 /system/app
adb push GoogleLoginService.apk /system/app/
adb push GoogleServicesFramework.apk /system/app/
adb push Vending.apk /system/app/
adb shell rm /system/app/SdkSetup*

2:Installing Superuser binary

adb shell mount -o rw, remount -t yaffs2 /dev/block/mtdblock0 /system
adb push su /system/bin/
adb push Superuser.apk /system/app/
adb shell chmod 06755 /system/bin/su
adb exit

3:Installing Busybox Binary

adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock0 /system
adb push busybox /system/xbin/
adb shell chmod 06755 /system/xbin/busybox

Please note that once the emulator has been closed the the above files will be deleted. So again the process should be repeated when the emulator is started once again.

IMEI and Custom ROMs

Posted on Updated on

Recently Android KitKat (4.4) has been released and now available in Google’s flagship device NEXUS 5. On every Android update there comes the introduction of CyanogenMod custom ROM or simply CM. The latest release of CM is v11. But CM11 has been released only for few devices. For my luck I could find CM11 or Android KitKat ported on my device (SGS I9003) that too an unofficial version in XDA forum. Let me personally thank the person behind porting CM11 on SGS I9003 (http://forum.xda-developers.com/showthread.php?t=2534312) . So as usual I installed the ROM using the steps specified in the forum and I could successfully boot into the new OS.   The very first moment I entered the home screen after some registration procedures I could find few random changes compared to Jelly Bean starting right from the dock menu to settings page. Anyways the new OS is looking too cool and thought of keeping the device for testing overnight before using the new OS for regular use.

After 24hrs of use I could find that the phone doesn’t connect to network provider. So I started to figure out the cause. From my observation I found that the device is having data connectivity but no telephony services. Later I replaced the SIM with another one but still the problem persists. Suddenly something caught in my eyes that the IMEI number has been changed when the new OS has been installed. The following is the new IMEI generated in my device when the OS (CM 11) has been installed.

                                                               ” 004999010640000

Here is the issue, I will give a brief explanation which I found in XDA forum ( http://forum.xda-developers.com/showthread.php?t=859914) . This could be really useful for those who really prefer to install custom ROM rather than stock OS. (THIS IS ONLY FOR SAMSUNG DEVICES)

Samsung uses RFS as their default file system. The IMEI number is stored in /efs folder found in the root directory.  This is a very sensitive system folder that contains Phone-specific information such as the IMEI , wireless devices MAC addresses, product code, and much more.The file system used by custom ROMs are YAFFS (Yet Another Flash File System). When custom ROMs are installed the filesystem will be changed to YAFFS and hence the RFS file system cannot be accessed since it is  proprietary of Samsung. So for as result the default device sensitive information are not available. To overcome this issue please use the following steps to recover back your lost IMEI number once custom ROM has been installed.

Step 1: Creating backup of the IMEI before flashing the stock ROM

  • While in stock ROM create a backup of the efs folder using the following command either in ADB or terminal emulator
                  ADB command prompt: su tar zcvf /sdcard/efs-backup.tar.gz /efs 
                  Terminal Emulator: busybox tar zcvf /sdcard/efs-backup.tar.gz /efs
  • The above command will create a backup of “efs” folder in your internal memory. Please copy the backup file to your sdcard.

Step 2: After installing custom ROM and restoring back the IMEI

  • Now extract the contents of the backup to your sdcard and perform the following commands using Terminal Emulator App
                      cp /sdcard/nv_data.bin /efs/nv_data.bin 
                      rm -rf /efs/nv_data.bin.md5
  • The first commands will copy the backup file “nv_data.bin” to your efs folder. And the second command will delete the existing “nv_data.bin.md5” since we have replaced the another file for “nv_data.bin” and the hash signature has been changed. Reboot the device and the system will generate a new “nv_data.bin.md5” file. Make sure you have rebooted the device after executing the above commands.
  • Now after rebooting the device use the following command in Terminal Emulator app to change the ownership of the file
                       chown 1001:1001 /efs/nv_data.bin
  • Cheers!! You have successfully replaced your default IMEI number.

The new changeover in UI- FlatUI designs

Posted on Updated on

Well smart phones have became an integral part of our life. Its quite common nowadays to see people with smart phones. In fact users prefer to choose devices which are simple to use and yet reliable. That’s the main reason why there is a tough competition between Android, iPhone and Windows Mobile. To make it simple the applications should really have unsophisticated UI rather than making it more complex and hard to understand.

Here comes a new era UI design – FLAT UI DESIGN. Flat designs uses plain 2D icons and more vibrant colors with minimal design and emphasizes usability. For example

Screenshot_2013-05-09-16-00-28

Another great example of flat design is Google Now app, which uses a card-like system to display information . Recently released iOS7 have got really a cool , “flat” and colorful design.

Since flat UI design has really became a new trend. So I thought of changing my new apps to flat design. The recently developed bus tracker app is my first step into FLAT design.

device-2013-10-07-224807

OBD2 CAN-BUS scanner

Posted on Updated on

Finally after a long wait I received the order for OBD2 Bluetooth scanner. It looks quite bulky as I thought but it quite fits perfectly into my cars OBD port.

IMG_20130803_103257

Once successfully connected to OBD port I paired my phone with the OBD scanner using Bluetooth connection. I installed a couple of most popular OBD2 scanner apps for Android and the output which I found was far more amazing. I could really communicate with my car and read the data from car ECU.

Untitled-1

Does Android has anything to do with an automobile?

Posted on Updated on

My question is whether Android has anything to do with an automobile????

OK folks lets dive into something interesting topic..This time I have got something fishy stuff which I found in the web few days back… As usual I was searching for new updates and new apps published in Android Play Store but suddenly something got stuck to my attention regarding OBD Bluetooth, OBD Console etc etc. But then I just had a look on those apps and could find something similar to speedometer apps found in the market. Later doing small research I could understand that those are diagnostic tools for cars. Once again Android has proved that its not a mere OS built for making calls, sending sms etc it has capabilities beyond a standalone mobile OS.

OK I was taking abt OBD OBD!! Any idea?? Well I am not an automobile mechanic but I would explain what I found on the web.. OBD stands for On Board Diagnostics. It is in fact used for self diagnostics and trouble shooting in automobiles. For more info http://en.wikipedia.org/wiki/On-board_diagnostics  On Board Diagnostics are done via OBD port found in cars. Say for example the one found after a long search inside my car

2013-06-08 13.15.08

ODB port usually contains 16pins. From the above figure you could find that only six pins are enabled. Here is the complete pin out diagram

obdii_port1070929671

(Ref: http://mbed.org/media/uploads/fossum_13/obdii_port1070929671.jpg)

OBD ports are usually present in most of the modern cars. You could have a small search beneath the steering column or under the hood.

Ok lets return back to our topic..we were discussing what Android can do with these ports. In fact we could create an interface with our Android device using OBDII Bluetooth connector. The Bluetooth connector looks something similar to this

312EZKI6M+L

The one featured above is ELM327 Bluetooth OBDII OBD2 Diagnostic Scanner readily available in amazon. If we are able to create an interface between our car and  Android device then there opens a whole new world of apps that could convert an Android device into something a different tool for vehicle diagnostics and monitoring such as speed monitoring, fuel statistics, engine temperature etc etc. I think geeks have already started rolling out apps for On Board Diagnostics. Here are few

and lots more……..

Useful libraries for Android UI development

Posted on Updated on

Hi All..Here I would like to share some  important libraries round the corner that are far well useful for the application development. The following are few of them listed, but unfortunately I couldn’t sort it in a proper order. Anyways I will be making it more informative till then have a look

  • Universal image Loader: I placed this library on the top because this one has helped me lot and moreover the configuration is quite easy and additionally with less or in fact causing no app crash. This library could be useful while loading images in listview or gridview from a URL. Here’s the project website https://github.com/nostra13/Android-Universal-Image-Loader
  • Android amazing list-view: This library is used to create list-view with section headers. Android doesn’t have support for section headers in list-view. Hope this would be more useful while creating list-view with section headers in Android. Additionally item pagination is also available. More info https://code.google.com/p/android-amazing-listview/
  • Android wheel: Are you bored of using the standalone date picker in android but love to use date or time picker similar to iphone?? Here ends your search! Use this simple library to create pickers similar to Iphone. More information: https://code.google.com/p/android-wheel/
  • Actionbar-Sherlock: Create actionbar in all versions of android. Actionbars are available from API level 11 onwards. this library would be useful for creating action bar in apps with API level <11. For more info: https://github.com/JakeWharton/ActionBarSherlock

This is for the time being more will be updated soon. Keep visiting..!!

Service- Does it serves as a background thread?

Posted on Updated on

Services are one of the important application components in Android that helps to execute long running operations in background. In fact what I thought was, Services would execute as a background thread without interrupting the main thread. But soon I found that my assumption was wrong, in fact Service also run in the main thread of the application  where the UI operations occur. Therefore, if we perform a long task in onStartCommand() method, it will block the main thread the end result is, unresponsive application . So to avoid the problem, you have to execute the complex task into a separate thread. this can be achieved with the help of

  • Asynctask
  • Declaring seperate Thread

Additionally there two memory management techniques as well. Declaring the return statement in onStartCommand() method.

START_STICKY: Notifies the OS to recreate the service after it has enough memory and call onStartCommand() again with a null intent.

START_NOT_STICKY: Notifies the OS  not to recreating the service again.