Friday, November 15, 2013

Implementation of Half Sync Half Async design pattern in Android Asynctask...

Wednesday, November 13, 2013

Dissection of Android service internals...

Monday, November 11, 2013

How an Android bound service works...

As i was delving into how an Android bound service works from a developer's perspective i came out with the following write-up which i would like to share with you.
The following diagram depicts the whole flow nicely.
Thus in the onServiceConnected we get a reference to the proxy of the Service through which we can call the methods of the remote service as if they were the local methods. What happens in the background is described here.
If the data that are being passed while calling any of the Service methods through the proxy reference (which we have got in the onserviceConnected callback)are basic data types, then the proxy first converts them into parcelable data. If we want to pass an user defined data types (any objects of an UDT), we have to derive that class from Parcelable interface so that the proxy can write them to the IPC layer.
Then we basically call the the transact on a member variable called mRemote where we pass those parcelable in data as well as the parcelable out data as the second and the third parameter respectively. We also pass something like Stub.Transaction_add (if the function in the AIDL interface was called, say add). At this point the interprocess communication is initiated with the transact method. The parcelled data is sent to the JNI interface which then sends it to the Binder kernel driver. The Binder kernel driver will send the client process to sleep and map the data and the code from the client process to the server process. Then the parcel is sent upwards from the binder kernel to the C++ middleware and then to the JNI and on java API wrapper layer the method onTransact of the stub is called.
@Override public boolean onTransact ( int code , android . os . Par c e l  data
, android . os . Par c e l  r eply , int f l a g s ) throws android . os . RemoteException
{
switch ( code )
{
case TRANSACTION_add:
data . e n f o r c e I n t e r f a c e (DESCRIPTOR) ;
int _ar g 0 ;
_ar g 0 = data . r e adInt ( ) ;
int _ar g 1 ;
_ ar g 1 = data . r e adInt ( ) ;
int _ r e s u l t = this . add ( _arg0 , _ar g1 ) ;
13 r epl y . wr i teNoExcept ion ( ) ;
14 r epl y . wr i t e I n t ( _r e s u l t ) ;
return true ;
}
}

The code is read first due to the accurate signature and the number of arguments. Then the arguments are extracted and the business logic gets executed. The result is written to a reply parcel and which is then again routed through the Binder driver which then wakes up the client and writes the reply parcel to the proxy.  The reply is unmarshalled by the proxy and then sent to the client application.
Hope this helps the android learners....

Saturday, August 3, 2013

Android boot up process and Services (both native and android services)

Tuesday, February 12, 2013

My tribute to Nirbhaya - a freeware android SOS app called Nirbhaya with source code

This freeware android app is my own way to pay tribute to Nirbhaya and all such women who have been badly abused by our society. Install it from Google Play.

Its not anything great but may be useful for people in distressed situations.


Although i have created this App to save people on street from rowdies and loafers, this can also be used by an ill person to notify his doctor or nurse.

And for those eager learners, the source code is available at https://github.com/sommukhopadhyay/nirbhaya

Thursday, December 20, 2012

eDocReader for Android devices

For the last couple of months i could not contribute much to my blog as i was busy in developing an android app which can show the streaming of a device-agnostically encoded video from a server. Moreover, most of my time is now dedicated to my family. However, in my pass time i have developed an eDocReader for Android devices. The research was done earlier and this is the result. The app needs to be polished for qualifying as a professional App. However, this can be the beginning. Eventually i will open the source code. The app supports .ODF, .ODT,.PDF, .DOC, .XML, .HTML, .RTF, .EPUB, .TXT formats. It also supports .ods, .xls and .odp files though in a bit coarse way.

You can install it from Google Play or you can download the app from this link.


You can also download it through




Thursday, September 20, 2012

I have found my idol...


I think i have found my idol. He is more a technologist than a businessman. He is not a multi billionaire. Hence wherever he goes the cameras of the press don't flash. He does not carry  any air around himself. He is a completely family man. Moreover he is a happy person contended with the great contribution he has made to the digital world. He is still young and hence i can idolize him for longer period. In simple words he is like one of us but has attained great heights in life... Probably he is the person whose name came to my mind after Swami Vivekananda. He is none other than Linus Torvalds, the creator of the world of linux.

Here is an excerpt from the book Just For Fun which describes him nicely in simple words...“Most acclaimed technologists - even most of the unacclaimed ones - have this immediate desire to let you know how brilliant they are. And that they are critical in a mission that is far more important than say, the struggle for the world peace. That was not the case with Linus. In fact, his lack of ego seemed downright disarming.... Linus appeared to be above it all. Above the New Agers. Above the high-tech billionaires. He seemed less like a reindeer caught in the global headlights than a delightful alien beamed down to show us the madness of our selfish ways”. Can i find such an unassuming idol in anybody else?