Tuesday, November 30, 2010

JSON Parsing Example

1. Create an Android application with one activity, name it as you wish, if you are doing it in eclipse all the basic stuff will be generated for you which is exactly what we need.
2. Find an example url which responds in JSON, I have used Twitter Trends found here: http://search.twitter.com/trends.json
The example response looks like this:
{"as_of":"Thu, 25 Feb 2010 11:30:17 +0000","trends":[{"name":"#nowplaying","url":"http://search.twitter.com/search?q=%23nowplaying"},{"name":"#nothingworsethan","url":"http://search.twitter.com/search?q=%23nothingworsethan"},{"name":"Dubai Mall","url":"http://search.twitter.com/search?q=%22Dubai+Mall%22"},{"name":"iPad Gets","url":"http://search.twitter.com/search?q=%22iPad+Gets%22"},{"name":"#SuperJuniorTrot","url":"http://search.twitter.com/search?q=%23SuperJuniorTrot"},{"name":"Justin Bieber","url":"http://search.twitter.com/search?q=%22Justin+Bieber%22"},{"name":"Click","url":"http://search.twitter.com/search?q=Click"},{"name":"Jaebum","url":"http://search.twitter.com/search?q=Jaebum"},{"name":"#tosavemoney","url":"http://search.twitter.com/search?q=%23tosavemoney"},{"name":"Protection","url":"http://search.twitter.com/search?q=Protection"}]}


As you can see this json data contains date attribute called ‘as_of’ as well as array of items, each consisting of name and url attributes.
We will create two simple java classes wich will hold that information.
First one is TwitterTrends.java
package com.softwarepassion.jsonexample;

import java.util.Date;
import java.util.List;

public class TwitterTrends {

private String as_of;
private List trends;

public String getAs_of() {
return as_of;
}
public void setAs_of(String asOf) {
as_of = asOf;
}
public List getTrends() {
return trends;
}
public void setTrends(List trends) {
this.trends = trends;
}



}
And the second one is a simple TwitterTrend.java
package com.softwarepassion.jsonexample;

public class TwitterTrend {
private String name;
private String url;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
TwitterTrends contains a list of TwitterTrend objects, both of them are simple beans and are very similar to the json response if you look closely
Now the fun part begins.
Download the Gson library from http://code.google.com/p/google-gson/ and add it to your java build path in eclipse.
Once you do that, you can now transform your json response to Java object on Android Platform:
Get the response as InputStream:

public InputStream getJSONData(String url){
DefaultHttpClient httpClient = new DefaultHttpClient();
URI uri;
InputStream data = null;
try {
uri = new URI(url);
HttpGet method = new HttpGet(uri);
HttpResponse response = httpClient.execute(method);
data = response.getEntity().getContent();
} catch (Exception e) {
e.printStackTrace();
}

return data;
}
Then use that input stream to create your java objects:
public void runJSONParser(){
try{javascript:void(0)
Log.i("MY INFO", "Json Parser started..");
Gson gson = new Gson();
Reader r = new InputStreamReader(getJSONData("http://search.twitter.com/trends.json"));
Log.i("MY INFO", r.toString());
TwitterTrends objs = gson.fromJson(r, TwitterTrends.class);
Log.i("MY INFO", ""+objs.getTrends().size());
for(TwitterTrend tr : objs.getTrends()){
Log.i("TRENDS", tr.getName() + " - " + tr.getUrl());
}
}catch(Exception ex){
ex.printStackTrace();
}
}

Sunday, October 17, 2010

Playing Media in Android

Today I 'm gonna tell you how much easy it is to play media in Android from a URL and your function is here.

public void playMedia(){
MediaPlayer mp = new MediaPlayer();

// here could be the video url too
mp.setDataSource(this,Uri.parse("http://blab..balal.mp3"));

mp.prepare();

mp.start();

}


MediaPlayer object contains start, pause , and stop and still requires a bit of research by you.. So enjoy the research !!!!!

Monday, September 27, 2010

HttpConnection Time out

Here's the code

HttpPost httpPost = new HttpPost(url);
StringEntity se = new StringEntity(envelope,HTTP.UTF_8);
httppost.setEntity(se);

HttpParams httpParameters = new BasicHttpParams();
// Set the timeout in milliseconds until a connection is established.
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 3000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient.execute(httppost);

HttpEntity entity = httpResponse.getEntity();
return entity;

Thursday, September 23, 2010

Generic Xml Parsing in Android

Here's the code

public void genericXmlParsing(String raw) throws Exception{
DocumentBuilder builder = DocumentBuilderFactory
.newInstance()
.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(raw)));
NodeList elementNames = doc.getElementsByTagName("ElementName");
NodeList elementValues = doc.getElementsByTagName("ElementValue");
for(int i=0;i Element elementName = (Element)elementNames.item(i);
ParsedXmlData parsedXmlData = new ParsedXmlData();
parsedXmlData.setElementName(elementName.getFirstChild().getNodeValue());
parsedXmlDataList.add(parsedXmlData);
}
for(int i=0;i Element elementValue = (Element)elementValues.item(i);
ParsedXmlData parsedXmlData = parsedXmlDataList.get(i);
parsedXmlData.setElementValue(elementValue.getFirstChild().getNodeValue());
}
}

Wednesday, September 22, 2010

XML Layout for Android

Ques:

Is there a way to display a View, such as a TextView sideways using the XML layout file? I know you can rotate the view using code in an activity, but is there a way just to do it with layout?


here's the answer

android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:layout_weight="5"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:text="sideways dummy text sideways dummy text sideways dummy text sideways dummy text sideways dummy text sideways dummy text sideways dummy text"
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content">


android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:text="Text Here"
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">



Sunday, September 19, 2010

GIF Animation In Android

The gif animation is supported in Android when GIF animation is played as Movie. Movie is a class provided to you by Android SDK.

In your main or any Activity File

public class AA extends Activity {

@Override
public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceStated);


setContentView(new MYGIFView());
}

}


Here's the class


private class MYGIFView extends View{

Movie movie,movie1;
InputStream is=null,is1=null;
long moviestart;
public GIFView(Context context) {
super(context);


Provide your own gif animation file

is=context.getResources().openRawResource(R.drawable.earth);
movie=Movie.decodeStream(is);

}

@Override
protected void onDraw(Canvas canvas) {

canvas.drawColor(Color.WHITE);
super.onDraw(canvas);
long now=android.os.SystemClock.uptimeMillis();
System.out.println("now="+now);
if (moviestart == 0) { // first time
moviestart = now;

}
System.out.println("\tmoviestart="+moviestart);
int relTime = (int)((now - moviestart) % movie.duration()) ;
System.out.println("time="+relTime+"\treltime="+movie.duration());
movie.setTime(relTime);
movie.draw(canvas,this.getWidth()/2-20,this.getHeight()/2-40);
this.invalidate();
}
}

Sunday, August 15, 2010

Best Practices for Handling Android User Data

As the use of mobile applications grows, people are paying more attention to how these applications use their data. While the Android platform contains extensive permissions designed to protect users, application developers are ultimately responsible for how they handle users’ information. It’s important for developers to understand the code they include, and consider the permissions they request, as mishandling these issues can result in users perceiving a violation of trust.

Maintaining a healthy and trustworthy ecosystem is in every Android developer’s best interest.

Here are a few tips for writing trustworthy Android applications:

1.

Maintain a privacy policy
2.

Minimize permissions
3.

Give your users a choice regarding data collection
4.

Don’t collect unnecessary information
5.

Don’t send data off the device
6.

... but if you have to, use encryption and data minimization
7.

Don’t use code you don’t understand
8.

Don’t log device or user specific information.

Maintain a privacy policy

Trustworthy applications are up-front about the data they collect and the reasons for collecting it. Users are generally happy to share information via such apps if they believe they will personally benefit. A clear and concise privacy policy, with details about the type of information collected and how it’s used, goes a long way towards generating trust and good will.
Minimize permissions

Android is unique among mobile operating systems for its simple, straightforward, operating-system-enforced permission model. All Android applications must declare the permissions they require, and users must approve these permissions before the application is installed. Users tend to distrust applications that require excessive permissions.

For example, a user installing this tic-tac-toe game might reasonably wonder why it needs to take pictures.
Give your users a choice regarding data collection

It’s called the paradox of privacy [PDF, 890K]. Users are often happy to share their information, but they want control over that sharing. Trustworthy applications give users control over their information. For example, the Android Browser has privacy settings which enable users to control how their information is shared.
Don’t collect unnecessary information

Trustworthy applications limit the kinds of data they collect. Collecting unnecessary information, especially if you never use it, just invites suspicion. When in doubt, don’t collect it.
Don’t send data off the device

If you have to handle user data, ensure that the data remains on the device whenever possible. Users are comforted knowing that their private information strictly resides in the phone. Sending data outside the phone, even if done for the user’s benefit, tends to draw suspicion.
... but if you have to, use encryption and data minimization

Sometimes, the collection of data is necessary. In that case, applications need to ensure that it is handled safely. A privacy policy will avoid leading to surprised and irritated users; in some cases, it may be advisable to prompt the user before transmitting data off-device.

First, minimize the amount of data you collect. Do you really need the user’s full phone number, or would the area code be sufficient? Can you use a one-way cryptographic hash function on the data before sending it to the server to help protect the user’s confidential information?

A case study: User Favorites

Suppose you want your app to maintain a list of “favorites” for each of your users, without going through a full registration process. In theory, you could do this by sending your server some combination of their phone number, device ID, or SIM ID. But why take the chance of worrying people about privacy issues; why not send a one-way hashed signature of whatever the identifying information is? Or even better, create a random unique id and store it on the phone, and use this unique id as the registration key for your application.

In the end, you’ll will still be able to retrieve their favorites, but you won’t need to send or store anything sensitive.

Second, encryption is critical to the safe handling of user data. Phones often operate on untrusted networks where attackers can sniff confidential traffic. Encrypting data in transit is a critical part of protecting user information.

Finally, when communicating with a server over HTTP, it’s a good idea to avoid encoding user information in a URL that is used with HTTP GET; rather, POST it in a message body. While using POST doesn’t guarantee that your information won’t be sniffed, putting it in the URL increases the likelihood that it will be automatically logged; out of the box, most web server software logs all the URLs that are received.
Don’t use code you don’t understand

In the open-source Android environment, it’s common (and good) practice to rely heavily on other people’s code, in the form of libraries and frameworks. But if that code is handling your users’ information inappropriately, it’s your problem. So make a point of checking code before you rely on it.
Don’t log user or device specific information

Application developers should be careful about on-device logs. Android makes it easy to write to the phone’s log, and anyone who has looked at “logcat” output knows that it is full of important but seemingly random debugging information from many applications. In Android, logs are a shared resource, and are available to an application with the READ_LOGS permission (only with user consent, of course!). Even though the phone log data is temporary and erased on reboot, inappropriate logging of user information could inadvertently leak user data to other applications.

Friday, July 30, 2010

Android Market on Android emultor

Finally, I am able to run the Android Market on the emulator. And also, see all the paid apps and copy-protected app, right here on my emulator.

What do you need?

Well, the basic SDK. 1.5, 1.6 or 1.1

And then, go to the HTC website where you can find the images/recovery images. Download the version (system image only) which you want to run.

http://developer.htc.com/google-io-device.html#s3
(Download the System Image zip)

Extract the files of this zip. There's a system.img file which you will need in the next steps.

Create an AVD (1.1, 1.5 or 1.6) depending on your requirements.

Copy this system.img file into the avd directory. For example, if you created an avd named "MyPhone", go to .avd\MyPhone\ and paste this system.img file here.

Now start the emulator. Voila, You are ready to go. After you sign in with a google account, your phone is ready to use. You now have access to all the market apps right from your emulator.

Note: If you are not able to run it successfully, and if you are getting Network communication error, please download the AVD that I have created from this link.

http://developer.htc.com/adp.html

Thursday, July 29, 2010

Passing information between Activities

Hi

There are serveral methods for passing information between Activities. But its not only the method that takes us to better results but also it depends on our ability to choose the optimized method out of available options.

1. Shared Prefs
2. Internal Storage
3. External Storage
4. SQLite Databases
5. Network Connection
6. Stuffing intent Object

So main point of concern here is Stuffing intent object.

Let's say we 've an Activity A that starts Activity B. In activity A before starting Activity B using intent object , first we will stuff the intent object which desired information that activity A needs to send to activity B.

public class ActivityA extends Activity{
....

Intent i = new Intent(A.this,B.class);

i.put("[name of variable]",[default value for variable]);

// eg. i.put("type","1");


startActivity(i);

}

Now in Activity B

public class ActivityB extends Activity {

....

Intent i = getIntent();

i.get..... methods can be used to get the desired values keeping the types of values in mind before storing them in variables.



}

Why Android Will Win the Mobile Platform War

Mirror, mirror, on the wall, which mobile operating system is fairest of all? That's a common question, given the many contenders in the mobile arena--and the well-publicized glitches that have recently come up.

Due to wide spread availability of android devices and its features android is gonna lead smartphones markets around the globe.

Few of its several features are

1. Flexibility

A hallmark of Apple's approach has always been putting users in a "walled garden" whereby they are "protected" from having to deal with the computer's nuts and bolts directly. Hand-in-hand with that approach comes restrictiveness; users are only allowed to do things that Apple has decided to let them do, just as they can only buy applications that have been preapproved. Apple insists on controlling the whole ecosystem.

With Android, on the other hand--much as with Linux itself--it's a wide-open world. Users have much more freedom to do what they want, developers have more freedom to create and sell applications for the ecosystem, and manufacturers can customize the experience for their customers.

2. Strength in Numbers

Apple's ability to be so restrictive stems largely from the fact that there's just one Apple and just one iPhone. That device could be the best in the world, but if there's only one, consumers will inevitably get less control and less choice. You may recall seeing something like that in the desktop arena.

With Android, the choices are many. LG alone is set to roll out at least 20 new Android devices this year. Among other things, that means that if one device fails, there will be plenty of others to continue the race.

3. DIY Tools

With App Inventor, Google has put even more power in users' hands by making it easier than ever before to create the apps they want. Sure, that will result in more junk apps out there--but it will also surely enable some gems. This will be just what the platform needed to help it catch up with the iPhone's head start in the app arena. A year ago, there were some 10,000 apps in Android Market--this month, it's expected to surpass 100,000. Where the apps go, users will follow.

4. Focus on Users

One of the things I found most disturbing in the recent "Antennagate" debacle surrounding Apple's iPhone 4 is how long the company took to acknowledge the problem and to respond. I think this ties directly into its iron-fisted control and monopoly over the iPhone experience. Monopoly-holders don't tend to care much about users; only when there's choice do they become a concern.

5. The Google Factor

Yes, there are other Linux-based mobile operating systems out there--Intel's MeeGo and Samsung's Bada, for instance. But Android is the one that has Google's support, and that's worth a lot.

Then, of course, there's the data. By virtually every account, Android looks poised to dominate the smartphone market in not very long. Some 100,000 Android devices are shipping every day, and market researcher ABI predicts that Linux-based handsets will account for 33 percent of the market by 2015.

Android specifically, meanwhile, is growing quickly. Whereas Apple smartphones lost a percentage point of market share between February and May, Google's Android gained an additional 4 percent, according to comScore. That's pretty impressive.

Heck, even Facebook's Mark Zuckerberg recently ditched his iPhone for an Android device.

In short, while Apple will always have its die-hard fans, just as it does on the desktop, the days of its restrictive dominance are numbered, at least in the mobile arena. Instead, a common sentiment in the coming months, I predict, will be the one depicted on this T-shirt. (No offense, Steve!)

Streaming a Video file

Good morning

Here's a simple code to play a 3gp Video file from network stream. But before going ahead you need to make sure that you have an actual GPRS enabled device and you have given Internet permission to your android application.

package com.playweb;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;

public class PlayWeb extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//String url = "rtsp://192.168.1.2/vod/DES.3gp";
String url = "rtsp://v5.cache4.c.youtube.com/CkELENy73wIaOAliq6nKYdHZZxMYESARFEIJbXYtZ29vZ2xlSARSBWluZGV4Wgl4bF9ibGF6ZXJg7sXyzsWH3ZlMDA==/0/0/0/video.3gp";

Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
}

I can also play the same using the MediaController class and its display and holder. But I was unable to make out the difference between them. So this time I 'm gonna ask this question to android public forums and when I will get the answer I will let you know.

The code for playing video using MediaController


package com.torrins;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.media.MediaPlayer.OnVideoSizeChangedListener;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.Toast;


public class PlayVideo1 extends Activity implements
OnBufferingUpdateListener, OnCompletionListener,
OnPreparedListener, OnVideoSizeChangedListener, SurfaceHolder.Callback {

private static final String TAG = "MediaPlayerDemo";
private int mVideoWidth;
private int mVideoHeight;
private MediaPlayer mMediaPlayer;
private SurfaceView mPreview;
private SurfaceHolder holder;
private String path;
private Bundle extras;
private static final String MEDIA = "media";
private static final int LOCAL_AUDIO = 1;
private static final int STREAM_AUDIO = 2;
private static final int RESOURCES_AUDIO = 3;
private static final int LOCAL_VIDEO = 4;
private static final int STREAM_VIDEO = 5;
private boolean mIsVideoSizeKnown = false;
private boolean mIsVideoReadyToBePlayed = false;

/**
*
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.mediaplayer_2);
mPreview = (SurfaceView) findViewById(R.id.surface);
holder = mPreview.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
extras = getIntent().getExtras();

}

private void playVideo(Integer Media) {
String destinationDir;
String url;
doCleanUp();
try {

switch (Media) {
case LOCAL_VIDEO:
/*
* TODO: Set the path variable to a local media file path.
*/
path = "";
if (path == "") {
// Tell the user to provide a media file URL.
Toast
.makeText(
PlayVideo1.this,
"Please edit MediaPlayerDemo_Video Activity, "
+ "and set the path variable to your media file path."
+ " Your media file must be stored on sdcard.",
Toast.LENGTH_LONG).show();

}
break;
case STREAM_VIDEO:
destinationDir = "/vod/mp4:Extremists.mp4";
url = "rtsp://v5.cache4.c.youtube.com/CkELENy73wIaOAliq6nKYdHZZxMYESARFEIJbXYtZ29vZ2xlSARSBWluZGV4Wgl4bF9ibGF6ZXJg7sXyzsWH3ZlMDA==/0/0/0/video.3gp";
Log.v(TAG,url);
path = url;
if (path == "") {
// Tell the user to provide a media file URL.
Toast
.makeText(
PlayVideo1.this,
"Please edit MediaPlayerDemo_Video Activity,"
+ " and set the path variable to your media file URL.",
Toast.LENGTH_LONG).show();

}

break;


}

// Create a new media player and set the listeners
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepare();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);


} catch (Exception e) {
Log.e(TAG, "error: " + e.getMessage(), e);
}
}

public void onBufferingUpdate(MediaPlayer arg0, int percent) {
Log.d(TAG, "onBufferingUpdate percent:" + percent);

}

public void onCompletion(MediaPlayer arg0) {
Log.d(TAG, "onCompletion called");
}

public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
Log.v(TAG, "onVideoSizeChanged called");
if (width == 0 || height == 0) {
Log.e(TAG, "invalid video width(" + width + ") or height(" + height + ")");
return;
}
mIsVideoSizeKnown = true;
mVideoWidth = width;
mVideoHeight = height;
//if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) {
startVideoPlayback();
//}
}

public void onPrepared(MediaPlayer mediaplayer) {
Log.d(TAG, "onPrepared called");
mIsVideoReadyToBePlayed = true;
if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) {
startVideoPlayback();
}
}

public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k) {
Log.d(TAG, "surfaceChanged called");

}

public void surfaceDestroyed(SurfaceHolder surfaceholder) {
Log.d(TAG, "surfaceDestroyed called");
}


public void surfaceCreated(SurfaceHolder holder) {
Log.d(TAG, "surfaceCreated called");
playVideo(5);


}

@Override
protected void onPause() {
super.onPause();
releaseMediaPlayer();
doCleanUp();
}

@Override
protected void onDestroy() {
super.onDestroy();
releaseMediaPlayer();
doCleanUp();
}

private void releaseMediaPlayer() {
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
}

private void doCleanUp() {
mVideoWidth = 0;
mVideoHeight = 0;
mIsVideoReadyToBePlayed = false;
mIsVideoSizeKnown = false;
}

private void startVideoPlayback() {
Log.v(TAG, "startVideoPlayback");
holder.setFixedSize(mVideoWidth, mVideoHeight);
mMediaPlayer.start();
}
}




Thanks

Thursday, July 22, 2010

Android System architecture : Episode 1

Android Software Stack has a very simple system architecture

Linux Kernel 2.6
Libraries and Android Runtime
Application Framework
Applications

Lets break it one by one:::::


Linux Kernel 2.6


Its hardware abstraction layer. It provides support to access device hardware and capabilities.

Display drivers
Camera drivers
Bluetooth drivers
Binder (IPC) drivers
USB drivers
Keyboard driver
Wifi driver
M - Systems driver
Audio driver
Power Management

Libraries
These are the libraries written in C languages.
Surface Manager
Open GL/ES : 3D rendering engine
SGL : 2D rendering engine
Media Framework
Free type : renders fonts
SSL : secured socket layer
SQLite
WebKit - browser
LibC

Android Run time

Core Libraries : written in Java Programming Languages
Dalvik Virtual Machine


Application Framework


Activity Manager
Package Manager
Window Manager
Telephony Manager
Content Providers
Resource Manager
View Systems
Location Manager
Notification Manager
XMPP Services

Sunday, July 18, 2010

Aankhen

Aankhen First Version Launched
Aankhen is a fun application that engages its users by giving them challenging images. User has to recognize the image so as to score more. On the completion of each stage user can view his score and the user can choose to move to more challenging level. Experienced users can increase the challenge level through application settings.

Saturday, July 17, 2010

Momo 10 Meet up at One 97

Hi

Good evening !

Recently I visited the Momo Meetup at One 97 Communications in Noida. As a mobile application developer I came to know that its the social networking application that are leading the mobile applications. There were 5 products that were presented by various members like (Samsung, Spice Digital, Mig33, Peek , rocketalk) out of which 4 were social networking applications giving there users an ability to connect with other friends and share their network updates on popular social networking platforms like facebook, orkut and twitter. I liked the idea behind the m.cell.in to get updates from all popular social networking sites like Facebook, twitter and orkut from a single application.


Then there was one innovative product by samsung called bada. a mobile platform that could develop the application for the features phones. It's a free SDK and open to developer. I 'm gonna download it today. Everything went well , from starting introduction to panel discussion Q & A sessions at the end.


Three persons also won a prizes as Samsung Wave handset for answering right questions posed in a quiz organized by Samsung.

Thanks to organizers and all members of Momo 10 meet up!