Showing posts with label Android. Show all posts
Showing posts with label Android. Show all posts

Android App Development: Implementing Search activities

Most Android phones have a search button. this button is used to search contacts,applications or anything on the phone. We can make use of the search functionality in our apps.

In this post we’re going to see how to implement search functionality to search for entries stored in a databaseand display them in a ListView.

our database has two tables: Countries and Names:

public class DBHelper extends SQLiteOpenHelper {public DBHelper(Context context) {super(context, "DemoDB", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {StringBuilder builder=new StringBuilder();// countries tablebuilder.append("CREATE TABLE Countries ");builder.append("(_id INTEGER PRIMARY KEY AUTOINCREMENT,");builder.append("NAME TEXT) ");db.execSQL(builder.toString());// Names table// Virtual table for full text searchbuilder.setLength(0);builder.append("CREATE VIRTUAL TABLE NAMES USING FTS3");builder.append("(");builder.append("name TEXT) ");db.execSQL(builder.toString());builder=new StringBuilder();//dummy dataInsertData(db);} void InsertData(SQLiteDatabase db) { ContentValues cv=new ContentValues();cv.put("NAME","USA");db.insert("Countries", "NAME", cv);cv.put("NAME","UK");db.insert("Countries", "NAME", cv);cv.put("NAME","Spain");db.insert("Countries", "NAME", cv);cv.put("NAME","ITALY");db.insert("Countries", "NAME", cv);cv.put("NAME","Germany");db.insert("Countries", "NAME", cv); cv=new ContentValues();cv.put("name","John");db.insert("NAMES", "name", cv);cv.put("name","Jack");db.insert("NAMES", "name", cv);cv.put("name","Ann");db.insert("NAMES", "name", cv);cv.put("name","Adam");db.insert("NAMES", "name", cv);cv.put("name","Sarah");db.insert("NAMES", "name", cv); }@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}

notice that the Names table is a VIRTUAL table. we created it as virtual to make use of Full Text Search (FTS3) feature in SQLite. this feature makes queries faster than that in regular tables.

then we add two functions to retrieve all rows from both tables:

/** * Return all countries * @return */public ArrayListgetCountries(){ArrayList countries=new ArrayList();SQLiteDatabase db=this.getReadableDatabase();Cursor c=db.rawQuery("select * from Countries", null);while(c.moveToNext()){String country=c.getString(1);countries.add(country);}c.close();return countries;}/** * Return all names * @return */public ArrayListgetNames(){ArrayList names=new ArrayList();Cursor c=this.getReadableDatabase().rawQuery("select * FROM Names", null);while(c.moveToNext()){String name=c.getString(0);names.add(name);}c.close();return names;}

and another two functions to retrieve data based on a search string:

/** * Return all countries based on a search string * @return */public ArrayListgetCountriesSearch(String query){ArrayList countries=new ArrayList();SQLiteDatabase db=this.getReadableDatabase();Cursor c=db.rawQuery("select * from Countries where NAME LIKE '%"+query+"%'", null);while(c.moveToNext()){String country=c.getString(1);countries.add(country);}c.close();return countries;}/** * Return all names based on a search string * we use the MATCH keyword to make use of the full text search * @return */public ArrayListgetNamesSearch(String query){ArrayList names=new ArrayList();Cursor c=this.getReadableDatabase().rawQuery("select * FROM Names WHERE name MATCH '"+query+"'", null);while(c.moveToNext()){String name=c.getString(0);names.add(name);}c.close();return names;}

then we will create our activity that has a list view like this:


we load data from database like this:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); list=(ListView)findViewById(R.id.list); DBHelper helper=new DBHelper(this); ArrayList items=helper.getNames(); ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1,items); list.setAdapter(adapter);}

In order to handle the search dialog ourselves we need to create a xml file with search configurations such as the search dialog title, voice search capabilities, content provider for auto complete and so on. we create a file with the name searchable.xml in res/xmldirectory:

the android:hint attribute denotes a string that acts as a water mark on the search text box.
then we need to add an Intent Filter in out app’s AndroidManifest.xml file to our activity to handle the search dialog:

when you press the search button, type some text and click on search the activit’s onSearchRequested() function is called, then an Intent with the action Intent.ACTION_SEARCH is created and you activity is re-created with this intent.
the search intent has you search string as a string extra with the name SearchManager.QUERY. also it can carry a bundle of other extras with the name SearchManager.APP_DATA.

not all Android devices have a search button, so we can start the search dialog manually by calling the activity’s onSearchRequested() from a button or a menu item:

@Override public boolean onCreateOptionsMenu(Menu menu) { menu.add("Search").setOnMenuItemClickListener(new OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(MenuItem item) { //launch the search dialogonSearchRequested();return true;}}); return true; }

we can pass some extra data as a bundle with our search dialog or an initial search string by overriding the activity’s onSearchRequested():

@Override public boolean onSearchRequested() { Bundle bundle=new Bundle();bundle.putString("extra", "exttra info");// search initial querystartSearch("Country", false, bundle, false);return true; }

we said before that the search query is passed as a String extra when our activity is re-created. so we can handle the searcgh string in our onCreate() like this:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); list=(ListView)findViewById(R.id.list); DBHelper helper=new DBHelper(this); Intent intent=getIntent(); // if the activity is created from search if(intent.getAction().equals(Intent.ACTION_SEARCH)){ // get search query String query=intent.getStringExtra(SearchManager.QUERY); ArrayList items=helper.getNamesSearch(query); //get extras, just for demonstration Bundle bundle=intent.getBundleExtra(SearchManager.APP_DATA); String info=bundle.getString("extra"); Log.v("extra", info); //bind the list ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1,items); list.setAdapter(adapter); } //activity created normally else{ ArrayList items=helper.getNames(); ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1,items); list.setAdapter(adapter); } helper.close(); }

we just extract the search string and any other extras and perform our search logic based on the search string.
and that’s was all about implementing search, stay tuned for another Android tutorial

More aboutAndroid App Development: Implementing Search activities

U.S. International Trade Commission rules against HTC, may mean problems for other Android device producers

The United States International Trade Commission has ruled against HTC and determined they have infringed on a couple of patents that may affect all Android devices.

The patents HTC was found to have violated are 5,946,647, “System and method for performing an action on a structure in computer-generated data” and 6,343,263, “Real-time signal processing system for serially transmitted data.”

An in-depth analysis by Mueller of the specific patent claims HTC has been found guilty of violating suggests that the infringing technologies are part of the Android architecture, rather than unique enhancements made by HTC. As such, competing Android vendors such as Motorola and Samsung may also be at risk.

Apple’s ’643 patent appears to relate directly to the iPhone’s practice of detecting contact information, such as phone numbers and email addresses, and forming a link that, when clicked, performs contextualized actions. Documents submitted by Apple accuse HTC of violating this patent through Android’s “Linkify” functionality.

Source: ITC ruling against HTC may spell trouble for other Android makers

More aboutU.S. International Trade Commission rules against HTC, may mean problems for other Android device producers

Android App Development: Implementing remote Android Services with AIDL

In the last post we saw how to use Android services to do time consuming operations in the background. in this post we will see how can a client application call the methods of a service defined in another application. this is achieved through Android Interface Definition Language (AIDL).

AIDL is a java like language that enables you to define an interface that both the application defining the service and the client application implement it.

the interface defines the functions that are needed to be called in the client application.

AIDL syntax is similar to that of Java, we can use the following data types in AIDL:

primitive data types: int, long, char, boolean,….String.CharSequence.List (ArrayList,Vector,…).the AIDL file is defined as follows:
open a notepad file and paste the following code in it: package com.mina.servicedemo;// service interfaceinterface IRemoteService { //sample method String sayHello(String message);}

take care of the package name com.mina.servicedemo.
we defined a methods sayHello(String message) that returns a string.

save the file with the name IRemoteService and change it’s extension to .aidl.copy the file to the src folder of your project.once you save and build the file, Android generates an interface java file with the name IRemoteService.java in the gen folder if the project.

now we want our service to expose this interface to client applications, so we return an implementation of the service in the onBind() method of our service:

package com.mina.servicedemo;import com.mina.servicedemo.IRemoteService.Stub;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.os.RemoteException;import android.widget.Toast;public class DemoService extends Service {@Overridepublic IBinder onBind(Intent arg0) {return mBinder;}// implementation of the aidl interfaceprivate final IRemoteService.Stub mBinder=new Stub() {@Overridepublic String sayHello(String message) throws RemoteException {return "Hello "+message;}};}}

the last thing to do in the service is to make its exported attribute in the AndroidManifest.xml file set to true like this:

our app structure can be like this:

now to our client application where we want to invoke methods from our service. the client application is a separate application with a different package name than that where the service is defined.

the client application needs a reference to the AIDL interface defined in the original applcation, this is done through the following steps:

in the client applicatio create a package with the same package name of that the service is defined in: com.mina.servicedemo.copy the AIDL file in this package.save and build and a new file called IRemoteService.java is generated. your app structure should be like this:

and we invoke the servcice methods in our activity like this:

package com.mina.serviceclient;import com.mina.servicedemo.IRemoteService;import android.app.Activity;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.os.RemoteException;import android.util.Log;public class MainActivity extends Activity {IRemoteService mRemoteService; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent serviceIntent=new Intent(); serviceIntent.setClassName("com.mina.servicedemo", "com.mina.servicedemo.DemoService"); boolean ok=bindService(serviceIntent, mServiceConnection,Context.BIND_AUTO_CREATE); Log.v("ok", String.valueOf(ok)); } private ServiceConnection mServiceConnection=new ServiceConnection() {@Overridepublic void onServiceDisconnected(ComponentName name) {// TODO Auto-generated method stub}@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {// get instance of the aidl bindermRemoteService = IRemoteService.Stub.asInterface(service);try {String message=mRemoteService.sayHello("Mina");Log.v("message", message);} catch (RemoteException e) {Log.e("RemoteException", e.toString());}}};}

and that’s was all about calling remote services with AIDL, stay tuned for another Android tutorial

More aboutAndroid App Development: Implementing remote Android Services with AIDL

Android App Development: Android Services

Android Service is used for long-running processes that do not require user interaction, such as calling a web service and parsing response. Or processes that need to be running even if the application that started the service is not on the foreground such as playing mp3 files in a music player.

we need to distinguish between A Service and a Thread or an AsyncTask: Threads or Async task perform their tasks in a background thread thus they do not block the main thread, while a service performs it’s work in the main thread. so if a service is performing an intensive task such as calling a web service, it may block the main thread until it finishes. So for intensive tasks a service should run it’s work in a background thread.

A service runs in the same process of the application and keeps running until stopped by itself, stopped by the user or killed by the system if it needs memory.

to create a service we create a class that extends android.app.Service and it would be like this:

public class DemoService extends Service {@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturn null;}}

next we need to define our service in our AndroidManifest.xml file:

The service life cycle has the following events

onCreate(): called when the service is created.onStart(): Called when the service starts by a call to startService(Intent intent).onDestroy(): Called as the service is terminates.

A service can be called from an activity in two ways:

By calling startService(Intent intent).By binding to the service through an Binder object.

to start a service from an activity using this method, we create an intent and start the service like this:

Intent intent=new Intent(this,DemoService.class);startService(intent);

the startService(intent) method causes the onStart() method of the service to be called, so the service can execute it’s work like this:

public class DemoService extends Service {@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onStart(Intent intent, int startId) {super.onStart(intent, startId);doSomething();}public void doSomething(){// do some work}}

the service will keep running until it stops itself via stop stopSelf() after finishing work:

@Overridepublic void onStart(Intent intent, int startId) {super.onStart(intent, startId);doSomething();stopSelf();}

or it can be stopped from the activity via stopService(Intent intent).

As the service runs in the same process of the application the service has only one instance (singleton) instance running. you may want to keep reference to this instance to perform periodical tasks or to call the service methods themselves.

to make the service bind-able we extends Binder class and return an instance of it in the service’s onBind(Intent intent) method:

public class DemoService extends Service {private final IBinder binder = new LocalBinder();@Overridepublic IBinder onBind(Intent arg0) {return binder;}public class LocalBinder extends Binder {DemoService getService() { return DemoService.this; } }@Overridepublic void onStart(Intent intent, int startId) {super.onStart(intent, startId);doSomething();stopSelf();}public void doSomething(){// do something}}

then we bind the service from our activity by first creating a ServiceConnection object to handle the service connection/disconnection then binding to the service by an intent like this:

public class MainActivity extends Activity {DemoService mService; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } ServiceConnection serviceConn=new ServiceConnection() { /** * service unbound, release from memory **/@Overridepublic void onServiceDisconnected(ComponentName name) {mService=null;} /** * service is bound, start it's work **/@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {mService=((LocalBinder)service).getService();mService.doSomething();}}; @Override protected void onResume() { super.onResume(); // bind to the service by an intent Intent intent=new Intent(this,DemoService.class); // AUTO CREATE: creates the service and gives it an importance so that it won't be killed // unless any process bound to it (our activity in this case) is killed to bindService(intent, serviceConn, Context.BIND_AUTO_CREATE); } @Override protected void onDestroy() { super.onDestroy(); / unbind the service whena ctivity is destroyed unbindService(serviceConn); }}

notice that we unbind the service in the activity’s onDestroy() method to disconnect from the service and stop it from executing any further

and that’s was all about Android services, stay tuned for another Android tutorial.

More aboutAndroid App Development: Android Services

Android App Development: Parsing Web Service Response part 1

In a previous last post we saw how to call REST and SOAP web services. The web service reponse can be one of the following:

XML.SOAP.JSON.

Android offers three types of XML parsers:

DOM Parser.Pull Parser.SAX Parser.

we’ll demonstrate each using the following xml example:

Jack smith 28

which we need to parse to create an object from Person class:

public class Person{ public String firstName; public String lastName; public int age; }

Android provides org.w3c.dom library that contains classes used to parse xml by constructing a document and
matching each node to parse the info.
to parse our example response with DOM parser, we implement a function like this

void parseByDOM(String response) throws ParserConfigurationException, SAXException, IOException{ Person person=new Person(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new InputSource(new StringReader(response))); // normalize the document doc.getDocumentElement().normalize(); // get the root node NodeList nodeList = doc.getElementsByTagName("person"); Node node=nodeList.item(0); // the node has three child nodes for (int i = 0; i < node.getChildNodes().getLength(); i++) { Node temp=node.getChildNodes().item(i); if(temp.getNodeName().equalsIgnoreCase("firstname")){ person.firstName=temp.getTextContent(); } else if(temp.getNodeName().equalsIgnoreCase("lastname")){ person.lastName=temp.getTextContent(); } else if(temp.getNodeName().equalsIgnoreCase("age")){ person.age=Integer.parseInt(temp.getTextContent()); } } Log.e("person", person.firstName+ " "+person.lastName+" "+String.valueOf(person.age)); }

The previous method is good, it retrieves the info correctly, but it requires that you are familiar with the xml structure so that you know the order of each xml node.
luckily Android provides a better approach of parsing using SAX parser.

Android provides org.xml.sax package that has that provides the event-driven SAX parser.
to parse the previous response with SAX parser, we have to create a class extending DefaultHandler and override the following methods:

startDocument(): invoked when the xml document is open, there we can initialize any member variables.startElement(String uri, String localName, String qName, Attributes attributes): invoked when the parser encounters a xml node, here we can initialize specific instances of our person object.endElement(String uri, String localName, String Name): invoked when the parser reaches the closing of a xml tag. here the element value would have been completely read.characters(char[] ch, int start, int length): this method is called when the parser reads characters of a node value.

so our parsing class will be like this:

/* * SAX parser to parse persons response */public class PersonParser extends DefaultHandler{// arraylist to store person objectsArrayList persons;// temporary person objectPerson tempPerson;// string builder acts as a bufferStringBuilder builder;/** * Initialize the arraylist * @throws SAXException */@Overridepublic void startDocument() throws SAXException {pesons=new ArrayList();}/** * Initialize the temp person object which will hold the parsed info * and the string builder that will store the read characters * @param uri * @param localName * @param qName * @param attributes * @throws SAXException */@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {if(localName.equalsIgnoreCase.equals("person")){tempPerson=new Person();builder=new StringBuilder();}}/** * Finished reading the person tag, add it to arraylist * @param uri * @param localName * @param qName * @throws SAXException */@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {// finished reading a person, add it to the arraylistif(localName.toLowerCase().equals("person")){this.persons.add(tempPerson);}// finished reading "firstname" tag assign it to the temp personelse if(localName.toLowerCase().equals("firstname")){tempPerson.firstName=builder.toString();}// finished reading "lastname" tag assign it to the temp personelse if(localName.toLowerCase().equals("lastname")){tempPerson.lastName=builder.toString();}// finished reading "age" tag assign it to the temp personelse if(localName.toLowerCase().equals("age")){tempPerson.age=Integer.parseInt(builder.toString());}}/** * Read the value of each tag * @param ch * @param start * @param length * @throws SAXException */@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {// read the characters and append them to the bufferString tempString=new String(ch, start, length); builder.append(tempString);}}

the code is pretty easy, the parser iterates over each node, you check the current node name and take an action.

then we call the parser like this:

public ArrayList getPersons(final String response) throws ParserConfigurationException, SAXException, IOException{BufferedReader br=new BufferedReader(new StringReader(response));InputSource is=new InputSource(br);PersonParser parser=new PersonParser();SAXParserFactory factory=SAXParserFactory.newInstance(); SAXParser sp=factory.newSAXParser(); XMLReader reader=sp.getXMLReader(); reader.setContentHandler(parser); reader.parse(is); ArrayList persons=parser.persons;return persons;}

what if our repspone was JSON instead of xml. it would be something like this:

"persons"[{"person"{"firstName": "John", "lastName": "Smith", "age": 25}}{"person"{"firstName": "Catherine", "lastName": "Jones", "age": 35}}]

this response is a JSON Array with the name “persons”, this array consists of “person” JSON Objects.
to parse such a reponse:

public ArrayList getMessage(String response){JSONObject jsonResponse;ArrayList arrPersons=new ArrayList;try {// obtain the reponsejsonResponse = new JSONObject(response);// get the arrayJSONArray persons=jsonResponse.optJSONArray("persons");// iterate over the array and retrieve single person instancesfor(int i=0;imuch easier than the previous methods.
notice that we used the methods optJSONArray,optString,optInt instead of using getString,getInt because the opt methods return empty strings or zero integers if no elements are found. while the get methods throw an exception if the element is not found.

and that was all about parsing web service reponses, stay tuned next week for another tutorial

More aboutAndroid App Development: Parsing Web Service Response part 1

How to Get Android Like Display on your iOS Device [Jailbreak Required]

You might prefer Android devices over the iOS device just because of the display (where all your apps are in one place), but you are stuck with iPhone display then we have a good news for you. Now you can get Android like display on your iOS device easily. AndroidLoader is an app which lets you view all your apps in one place. In short, if you install this app you would get Android like touch and feel on your iOS based device.


You may also want to use Android lock screen on your iOS device.


AndroidLoader How to Get Android Like Display on your iOS Device [Jailbreak Required]


This app requires a jailbroken device. If you haven’t yet jailbroken your device then you should get familiar with jailbreaking your iPhone device with snowbreeze or jailbreaking using Redsnow.


This app is not available for iPad yet, primarily due to large display of iPad (more apps mean more the load on the device). You can also make your own skin too. Check out the video below to see the details of the features of this app.



This app is available at Cydia from the ModMyi Repository and will cost you only $2.99. This app costs much less than getting an Android device.  If you are already using this app do let us know about your experience.

More aboutHow to Get Android Like Display on your iOS Device [Jailbreak Required]

How to install Netflix on any Android Phone [Complete Guide]?

Few days back, Official Netflix app was released for the android devices. But unfortunately, it was compatible with only some of the Android Device (HTC Incredible, Nexus One, EVO 4G, G2 and Nexus S). it wasn’t compatible with rest of Android devices even though your device is on Froyo or Gingerbread.

If your Device was in the list of incompatible devices than you don’t need to worry because the Hackers and Developers over XDA-Developers are always here to help you. They have modified the version of Netflix so that you can install and use it on any Android phone and all you need to have is Froyo or the latest version installed on your Droid. But still there are some restrictions which are regarding to your location.

Around 70 % of users who downloaded and installed this modified Netflix APK on their rooted devices had 100 % success ratio. The others were either on stock [non-rooted] or were located outside the US.So, we recommend you to root your Phone before installing this app.

So let’s come straight towards the steps to install Netflix on your Android Phone.

What you need?

A rooted Android Phone on Android 2.2 Froyo or higher

Modified Netflix app (Download Here)

How to Do?

Actually, installing the Netflix app is just like simply installing the .Apk from your PC (Posted Here) But for your easiness, we will elaborate them here

Download the apk file from above links. Actually, there are three apps, if you are getting the incompatibility error than try the other one.

copy it to the specific Folder on your Android Phone

Go to Settings >applications and Enable Unknown Sources

Go to android market and install Astro file Manager

Go to Astro File manager on your Android phone and Select the previously copied (.apk) file

Click on Application manager on android Device

Click on install and install the application.

Viola! You have successfully installed the Netflix app on your Android Phone.

 

More aboutHow to install Netflix on any Android Phone [Complete Guide]?

Lenovo ThinkPad Honeycomb Tablet – Does Android Do the Trick?

This is a Guest post by Andy G. If you want to write guest post for TecRux, read our guest post guidelines.


It is hard to imagine that just two years ago there were no tablet computers available in the stores, at least not to speak of. Right after the first iPads from Apple started shipping, suddenly the whole world goes haywire and every single company that is into computer and multimedia technologies has at least one such product in development. One of these companies seems to be Lenovo, a company that is known for the former IBM line of laptop computers, the ThinkPad. Incidentally it is the ThinkPad name that makes it impossible for Apple to trademark the “Pad”.


Lenovo ThinkPad Tablet 1 Lenovo ThinkPad Honeycomb Tablet – Does Android Do the Trick?


Lenovo already exists for almost thirty years, but became a household name after they acquired IBM’s PC company division in 2005 for almost two billion dollars. It is a China based IT oriented corporation that operates with revenue of about 16 billion dollars annually.


A tablet is actually nothing new for Lenovo, they had already a ThinkPad laptop computer with the tabled touchscreen function, a really good laptop that had a touchscreen that could be swerved and looked like a simple tablet when closed. The computer ran on Windows 7 and was actually not a real tablet, but a regular laptop PC. When this whole craze about tablets launched, it was a given that Lenovo will produce one of their own, they had the technology already and manufacturing also, the only real surprise was that they will base the tablet on the Android OS Honeycomb, the 3.0 version tailored towards tablets, not smartphones.


The leaked specifications do not surprise, it is what all high-end tablet computers nowadays have to offer, in order to compete, the 1280 x 800 HD resolution multi-touch 10.1 inches wide-screen, Android 3.0, Nvidia Tegra 2 processor, Wi-Fi, USB, HDMI, even 3G, but no Bluetooth – surprisingly, up to 64GB of storage, optional keyboard case, but also very interesting “true pen support”. Business related software is supposed to be offered with it, anti-theft measures and remote wipe capability, as well as some sophisticated IT integration. 1080p playback capability and HD camera are almost expected nowadays, but there is no real confirmation on any of these informations as of today.


thinkpad slate Lenovo ThinkPad Honeycomb Tablet – Does Android Do the Trick?


At this point it is really hard to say, since that all that is known is from unconfirmed and apparently leaked sources. The true competition will then be the BlackBerry PlayBook tablet, which is really something to be beaten and is already out. Nevertheless, ThinkPad is the only technology that has been NASA approved for use on the Space Station, therefore if a tablet is making it into outer space, it will most likely be the Lenovo ThinkPad tablet.


The choice to go Android was probably a sound one, not only is already a vast multitude of applications available and most of them are free, but the new 3.0 Honeycomb version is geared towards tablets and complements the platform perfectly. In a few months there will be dozens of high-end tablets flooding the market and it remains to be seen which one will appeal to the broad crowd the most. The idea to implement the “true pen support” may be the real plus, if Lenovo can land someone like DHL or FedEx to use these on a large scale, they will clinch the required sales numbers instantly.


Guest post by Andy G. Andy G works for Bravofiles. Get the latest drivers for your PC from here.

More aboutLenovo ThinkPad Honeycomb Tablet – Does Android Do the Trick?

Asus teases with a joint Android Phone and Tablet, will reveal at Computex

Asus Joint Android Phone and Tablet

Asus having a great time with it’s economy Android Tablet Asus Eee Pad Transformer and looking forward to Computex Taipei starting next Monday where the company will introduce few more Android Devices. To get some attraction for upcoming devices Asus just started to tease Android lovers with some images. First we got a series of images leaked on TechinStyle, then a teaser on facebook which hang a little question: Pad or Phone? So we guess Asus got something on their bag which could be an Android Tablet with Phone functionality. Now have a very close look at images below (Click for larger view):

Asus Joint Android Phone and Tablet Asus Joint Android Phone and Tablet Asus Joint Android Phone and Tablet

The above images are quite interesting as the first image look different with aluminum frame while the other two images suggested matte and glossy plastic in the side. Now here is an idea, on the second image if you look closely it seems a devices laying down with the edge we noticed on the first image actually the Phone on a shell with bigger display which turns it into a Pad. On the third image there is a button which might use to release the Phone from the Pad. We have seen previously Motorola does same thing with a Laptop dock for Atrix 4G. Asus just bring a much better and cooler design with their asusdesign branding.

More aboutAsus teases with a joint Android Phone and Tablet, will reveal at Computex

Download Nano Panda Free Android game, Take the physics challenges

Nano Panda Android game


Nano Panda is a sweet & fluffy puzzle game with creative physics challenges! for Android has become very popular, recently highlighted and rated on various Android blog and website. Nano Panda is a science themed puzzle game where Pandas are shrunk down to nano size in order to destroy EVIL ATOMS that have infiltrated a science lab. This nano-sized hero pandas exploring electromagnetism and gravitation with a sweet cartoony visual style, cute characters (even the bad-guys) and a catchy soundtrack. The magnetic pull really is unique and brings new energy to the genre.


Download Nano Panda Free Android game  Download Nano Panda Free Android game  Download Nano Panda Free Android game


The game has 64 unique levels to complete, 4 wicked chapters to unlock through collecting stars. Use the MAGNETIC POWERS of two or more pandas in order to grab all the stars and destroy all unruly atomic particles. With magical soundtrack and stunning graphics you will enjoy hours of gameplay! Watch below the video trailer of Nano Panda Android game:
YouTube Preview Image


Nano Panda Free Android game was developed by unit9.apps
Package name: com.unit9.nanopandafree.apk
File size: 16MB


Download Nano Panda Free Android game v1.2.2:
Nano Panda Free Android apk


Nano Panda is a Free Android Game. To Download Nano Panda Free Android game head to Android Market link or Simply use Barcode reader or click Direct Install form Android Phone’s Browser.

More aboutDownload Nano Panda Free Android game, Take the physics challenges

Download Shoot the Cans Android game Free,

Download Shoot the Cans Android game


Feeling bored? Take a little break and relax by throwing down beverage cans in a row on your Android Smartphone. Shoot the Cans is an absorbing game that will allow you to take a break from daily routine. In Shoot the Cans Android game you can use many different types of objects such as various balls and all items at close hand to throw down the cans. 
There is  three worlds to pass in different scenes, each containing 20 stages. The first world is the beach where you can aim at cans arranged on sand hills. As a kind of weapon you use different balls, or even … coconuts :) Each next world has a new scenery, new weapons and additional surprises :)


Download Shoot the Cans Android game    Download Shoot the Cans Android game


Shoot the Cans is an time killing which turn out to be very addictive. In Shoot the Cans you can throw anything at cans and have fun, as well as improve your precision and beat new records!


Shoot the Cans Android game was developed by unit9.apps
Package name: pl.netox.cans.apk
File size: 5.3MB


Download Shoot the Cans Android game v1.0:
Shoot the Cans Free Android apk


Shoot the Cans is a Free Android Game. To Download Shoot the Cans Android game head to Android Market link or Simply use Barcode reader or click Direct Install form Android Phone’s Browser.

More aboutDownload Shoot the Cans Android game Free,

Dancing Android controlled by Motorola Xoom

 Disco Droid: Dancing Android controlled by Motorola Xoom


We have seen Dancing Android a few times, recently in Google I/O with Inflatable Costume. Here is the latest Disco Droid which is similar to Android Balloon rider dance Video but the cool thing about this video is it’s a full-fledged remote control robot programmed to groove which is controlled from an app on the Motorola XOOM. On top of that the video filmed and edited using Android. Awesome huh! Let’s watch below the video: Disco Droid, an Android ADK project.
YouTube Preview Image

More aboutDancing Android controlled by Motorola Xoom

Calorie Counter & Diet Tracker Android app from CalorieCount.com

Download Calorie Counter & Diet Tracker Android app


The most popular website among health awareness people CalorieCount.com just released it’s official Android App Calorie Counter & Diet Tracker. The app already has become very popular on iPhone/iPad and featured on “The Today Show”.


Calorie Count’s app is a free dieting tool that allows Android users to search and log nutritional data for over 200,000 foods, popular exercises and healthy recipes, as well as track their weight loss, all while on the go. The concept behind Calorie Count is to help people lose weight by providing a comprehensive calorie counter and nutritional analysis. If you have already a member in Caoriecount.com, nothing new to tell you how useful would be the app right on your palm. Below in the list of Calorie Counter & Diet Tracker Android app key features:

 An easy-to-use graphical dashboard that allows you to navigate through the app while being able to quickly visualize your dieting progress.One of the most comprehensive nutritional analyses of food consumption against daily targets among calorie counting Android apps.The ability to quickly search and log more than 200,000 food items.Tools to view current and past food, activity and weight logs.Compare your intake and daily burn expenditure using our net calorie gauge The ability to record daily weight and view charts to measure your body’s progress against weight loss goals.Your CalorieCount Member account will be automatically updated whether you log information through a computer or the Android app.

Download Calorie Counter & Diet Tracker Android app    Download Calorie Counter & Diet Tracker Android app


Calorie Counter & Diet Tracker Android App was developed by unit9.apps
Package name: com.about.CalorieCount.apk
File size: 5.3MB


Download Calorie Counter & Diet Tracker Android app v1.0:
Calorie Counter & Diet Tracker Android apk


Calorie Counter & Diet Tracker is a Free Android App. To Download Calorie Counter & Diet Tracker Android app head to Android Market link or Simply use Barcode reader or click Direct Install form Android Phone’s Browser.

More aboutCalorie Counter & Diet Tracker Android app from CalorieCount.com

Angel Dialer – The best Dialer for your Android Mobile

The thing which I loved most about my Android phone is that I can customize it beyond the limits. Previously we told you about customizing messaging, launching screen, custom ROMs, themed apps and many such kind of apps for your Android phone. The best thing about these apps was that you can customize it to high end for example in case of messaging you can customize the color even the font of each and every contact in your Messaging list separately. But today we are going to customize the Phone dialer on your Android Phone. Yeah even we did a lot of themed app such as Go launcher, win 7 themes but the Phone Dialer was same all the time.



So, now you can customize your Phone Dialer by using a great app Angel Dialer. This app is developed by XDA-developer thinkpanda and the thing which you will surely love about this app is that it is free of cost and easily available in Android Market. This quick dialer will let you dial your Friends or family numbers with just a tap and very quickly. Angel dialer has very fast dialing speed as well.
Let’s come to the Salient features of this amazing app.

Salient Features:

T9 keypad quick search
– Blazingly fast contact searching
– Minimize taps to get the job done
– Maximize screen space to show search result
– Multitouch keypad for faster input of numbers



Four views : search view, call log view, contacts view, and favourite view
– Show all phone numbers of contact in one place (click the thumbnail)
– Display custom phone and email type of Google contacts
– Long click contacts to show contextual options.
– Share contacts as text or vCard.
– Support adding pause to phone numbers
– Two color schemes-




Search contacts by whole word or first character of words
– Search contacts with Latin, Cyrillic, Greek or Hebrew alphabets, and Chinese phonetic (Hanzi Pinyin, MPS or Cantonese)
– Both contact name and phone number are searched
– Wild card search phone number and contact name (e.g Enter “123*4? match phone number “12399444?)
– Filter contact list or search result by contact groups. (Please press “Menu” button)
– Search mode for entering keyword directly.
– Landscape mode
– Open Voice mailbox




Angel Dialer has received many good reviews from users at Android market that are due to its full screen search Options and many others.


You can download it from Android Market.



Or can follow the Developers XDA page here


 


More aboutAngel Dialer – The best Dialer for your Android Mobile

Root Motorola Xoom on Android Honeycomb 3.1?

If you have recently upgraded your Motorola Xoom to Honeycomb 3.1 than you will have many chances to lose root Access on your Tablet. However, you can follow these simple instructions to root Motorola Xoom on Honeycomb 3.1.

Important Notes:The following will VOID your warranty but will easily unlock the Xoom for fast software flashes using a custom recovery and will allow flashing root files or manipulated system files on to your current software installation.This is a Factory-Reset for your Tablet. So you can Sync your Contacts with Google Contact service or Backup rest of messages, Phone by using MyBackup Pro. Alternatively, you can move them to SD card as rooting will have no effect on SD settings and files.Proceed at your own risk. We are not responsible if your device gets bricked or damaged during the process. But there are very minor chances of bricking your Xoom by this method.This is strictly for the persons who have already upgraded their Motorola Xoom to honeycomb 3.1.Before proceeding Please ensure that your tablet has at least 50% battery so that it can’t interrupt the rooting process.Firewall and other antivirus programs should be disabled during the rooting process.Pre-requisites:

ADB Setup should be properly configured on your PC for its proper usage.

WiFi_RootTool_3.1 Download here

Instructions:

Download WiFi Root Tool 3.1 and copy it to the root of your SD Card.

USB Debugging mode should be enabled before you proceed, to do this go to

“Settings > Applications > Development > check the USB Debugging Mode”

Launch Command Prompt and run the following commands:

adb reboot bootloader
fastboot flash recovery recovery-solarnz-XXX-XXX.img
fastboot reboot

When the last command is given, you Motorola will be rebooted. And you will see Motorola Logo appearing for 5 seconds and here Press the Volume down Button.

Your Device will be rebooted in recovery mode.

Select “catch the boot” it says ‘Starting Fastboot protocol support’ then you hit Volume Down too soon. Hold Vol UP + Power to reboot and try again

Now your Device will be in the Clock Work Mod recovery, and here select the “install zip from sdcard” option and then “WiFi_RootTool_3.1.zip” option to select the file and choose “Yes – Install WiFi_RootTool_3.1.zip” to proceed for the installation process after which choose the option of “Reboot System Now” to reboot the Xoom.

So, Finally you have successfully rooted your Motorola Xoom Tablet on Android Honeycomb 3.1.

 

More aboutRoot Motorola Xoom on Android Honeycomb 3.1?

Install Android 2.3.3 Gingerbread XWJVH ROM In Samsung Galaxy S

Samsung Galaxy S users find themselves again in Luck because there is a new update Android 2.3.3 Gingerbread (XWJVH) for Samsung Galaxy S. Previously; A new version XWJVH Android 2.3.3 Gingerbread ROM is leaked for the Samsung Galaxy s i9000. This version is said to be more stable and smooth. Gingerbread was announced for the Android Devices of latest Version but luckily the Dev team On XDA-Developers is able to Update Samsung galaxy SI9000 to Gingerbread 2.3.3.


Following are details of the leaked version.

Firmware version: 2.3.3Baseband version: I9000 XXJVOKernel Version: 2.6.35.7-i9000XWJVH-CL184813Build Number: GINGERBREAD.XWJVH


Disclaimer:

Proceed at your own risk. We are not responsible if your device gets bricked or damaged during the process. But there are very minor chances of bricking your Xoom by this method.

Requirements: Android 2.3.3 Gingerbread ROM XWJVH for Samsung Galaxy S Download HereODIN flashing tool Download HereSamsung USB drivers for your Samsung Android device.  Download hereAlternatively, you can install Kies that is shipped with your device. It will have all the drivers for making USB connection with your PC.USB CablePIT Download HereProcedure:

Before Proceeding make sure that you have the enough battery Power to flash a new Rom.


Download all the Files which are required for flashing gingerbread on your Samsung Galaxy S I9000.


Download Android 2.3.3 XWJVH ROM and extract the contents using password samfirmware.com. [Credits to samfirmware.com for uploading the leaked ROM]


Run the ODIN (previously downloaded)


Switch off your Samsung Galaxy S i9000


Put the phone into “Download mode”. To do it, press and hold “Volume Down” button, “Power” button, and “Home” key simultaneously for few seconds. It should boot into “Download Mode” in which you will see a yellow android character with a sweeper with “DON’T TURN OFF THE TARGET” message.


Now Connect the Phone with PC via USB Cable.


When ODIN will be Opened, A box will be turned to yellow.



Click ‘PDA’ button in ODIN, browse and select the ‘JVH_JV3_JPO.tar’ file that you earlier downloaded.


Click ‘PIT’ button, browse and select the PIT file that you downloaded.


Make sure ONLY  ‘Auto Reboot’ and ‘F.Reset Time’ checked in options.


Now Click on Start and Sit back and Relax.



After successful flashing, you will see message “PASS” in green color in the ODIN interface.



Your Phone will be rebooted and you can disconnect the Samsung Galaxy from PC.


Congrats! You have successfully installed Android 2.3.3 Gingerbread XWJVH on your Samsung Galaxy S i9000.


To Check this Go to


Applications>Settings>about Phone>Firmware Version


And the Firmware Version should be 2.3.3 XWJVH



 


 


More aboutInstall Android 2.3.3 Gingerbread XWJVH ROM In Samsung Galaxy S