Sunday, July 1, 2012

Twitter Integration with Mobile Application

While integrating our mobile application with Twitter, I want to share the steps.

1 - Create you application in Twitter developer page using the mentioned link : https://dev.twitter.com/apps/new

2 - Fill all the details mentioned in the Twitter new application page, and create a new app.

3 - Now, Once your application will create, it will give you these information.
  • Consumer key
  • Consumer secret
  • Access token
  • Access token secret

Now, there are two ways to integrate Twitter with your mobile.
a - Single User Implementation :
This works only for a single user. It means, only one user will register with the application, and every time when user want to post any data in Twitter, it will post only to his/her Twitter page.
This can be achieved by this way :

//Get authorization to twitter.
Credential credentials = new Credential(consumerKey, consumerSecret, accessToken);

//Create account manager for tweet the post.
UserAccountManager accManager = UserAccountManager.getInstance(credentials);

//Verify credentials and post to twitter
try {
                    if(accManager.verifyCredential()) {
                        Dialog.alert("Authenticated");
                        //post data to Twitter

                    }else{
                        Dialog.alert("Authentication Failed");
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    System.out.println("IOException Occured: "+e.getMessage());
                    e.printStackTrace();
                } catch (LimitExceededException e) {
                    // TODO Auto-generated catch block
                    System.out.println("LimitExceededException Occured: "+e.getMessage());
                    e.printStackTrace();
                }


b - Multiple User Implementation :
This works for multiple user. Any user can enter his username and password, and post data to his/her twitter profile.
For this, first our application should be authorized by Twitter. To do this, we need to send an Authorization mail to api@twitter.com. Once, the application will authorize, you will get a confirmation mail.

Now, to share your post to Twitter, do this :

                Credential credentials = new Credential("username or email", "password", "consumerKey", "consumerSecret");
                UserAccountManager accManager = UserAccountManager.getInstance(credentials);
           
                //If your application is authenticated then it returns token value, else return null.
                Token token = accManager.getAccessToken();
               
                try {
                    if(accManager.verifyCredential()) {
                        Dialog.alert("Authenticated");
                        //post data to Twitter

                    }else{
                        Dialog.alert("Authentication Failed");
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    System.out.println("IOException Occured: "+e.getMessage());
                    e.printStackTrace();
                } catch (LimitExceededException e) {
                    // TODO Auto-generated catch block
                    System.out.println("LimitExceededException Occured: "+e.getMessage());
                    e.printStackTrace();
                }


- Here cunsumerKey and consumerSecret are reference to the application. And token is reference to authorized user. If your application is not authorized, application will throw Http 401 error (Unauthorized Exception).

Retrieve cell id for location, sign it for S40

How to retrieve cell id :

Here is the code to retrieve cell id, to know your location :

getCellId() {
//for s40 series
id = System.getProperty("Cell-ID");
//for s60 series
id = System.getProperty("com.nokia.mid.cellid");
}

This code will works only for s40 3rd edition fp1, and s60 3rd edition fp2.
for s60 fp2 devices, it shows you easily the cell id of device to know your location. But for s40 FP1, it gives you null value. To get the cell id, we need a certification for it.

Wednesday, March 28, 2012

Floating Point problem in Android OpenGL

While working with OpenGL in Android devices, I found a bit trouble with Float Point Values problem.

Some of the older version devices (mostly android 2.0 or less) hardware does not support floating point. Hence if we draw any 3D image using OpenGL, it will not display that drawing on older devices. To work on OpenGL ES it is better to draw the graphics using fixed point values.

List of devices that supports floating point values :
All Samsung Galaxy mobiles.
HTC Salsa, T-Mobile G2, AKA, HTC Dream,
Droid, Nexus
Motorola Milestone, NEON,

ARM-based Qualcomm MSM7201 CPU does not have VFP (floating point coprocessor) and therefore floating point calculations have to be done via software-float.