Thursday, July 12, 2012

How to start an activity just after booting of a mobile device

This post is an example of how an application will work just after the booting of the device.Here the example shows an authentication app which will work as a lock to the device.

1) Define in the AndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.boot"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="8" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
  <receiver android:enabled="true" android:name=".BootActivity"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
        <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
  </receiver>
  <activity android:name=".AutoStartActivity">
    </activity>
    </application>
    </manifest>


2) Create BootActivity.java in src with the following code
Here AutoStartActivity is the activity we have to run after booting


package com.boot;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootActivity extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Intent i = new Intent(context, AutoStartActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
}
}

3)The XML (main.xml) for the activity is


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" android:gravity="center">

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" android:gravity="center_horizontal">

        <EditText
            android:id="@+id/editText1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <requestFocus />
        </EditText>

        <Button
            android:id="@+id/button1"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:text="Login" />

    </LinearLayout>

</LinearLayout>




4) Create the activity AutoStartActivity

package com.boot;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class AutoStartActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText ed=(EditText)findViewById(R.id.editText1);
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
if(ed.getText().toString().equals("abc123"))
{
AutoStartActivity.this.finish();
}
else
{
Toast.makeText(AutoStartActivity.this, "Failed", Toast.LENGTH_SHORT).show();
}
}
});
}

@Override
public void onAttachedToWindow() {
   this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
   super.onAttachedToWindow();
}
}


  • Run it in a new avd


Using Google Maps in Android

To use google map in our application follow the steps below:

  • Getting the MD5 Fingerprint of the SDK Debug Certificate    
          For getting the MD5 certificate open your command prompt 
                  * change the path to the jdk's bin ie. the command will be like  [ cd C:\your path\bin ]
                  * now type the command 
                       keytool -list -alias androiddebugkey -keystore "your debug key store path" -storepass android 
                        -keypass android
                  * 'your debug key store path' can be obtained from Eclipse-window>preferences>android>build.
  • Registering the Certificate Fingerprint with the Google Maps Service 
          For getting the API key using MD5 key go to http://code.google.com/android/maps-api-signup.html
and type your MD5 key there, accept the agreement and click the "Generate API Key" button.
  • Add the Maps API Key to your Application
         <com.google.android.maps.MapView android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:enabled="true"
                android:clickable="true"
                android:apiKey="example_Maps_ApiKey_String"/>


**  How to get MD5 fingerprint when you get  SHA1 from your command prompt???


    • While generating MD5 fingerprint for jdk version 1.7, it generates the fingerprint with SHA1  by default.But  the Google Maps doesn't recognize it.So you have to give the below command in the command prompt to get MD5 and SHA1 fingerprint.                                                               
    keytool -list -v -alias androiddebugkey -keystore "your debug key store path" -storepass android -keypass android

    Monday, May 14, 2012

    BB10 the future of mobile world

    Blackberry 10

    Blackberry 10 is an upcoming proprietary mobile operating system, developed by Research In Motion for its BlackBerry line of smartphone and tablet handheld devices. It is based on QNX which was acquired by RIM in April 2010. The platform was originally called BBX but this was changed when RIM was blocked from using the BBX trademark after legal action from BASIS International, who already use it for their software.
    BB10 is the super phone that RIM is gonna release in the coming fall 2012.BB10 is the next generation phone in-short super phone that is going to get released for those people who believe in success and want to get things get done perfectly. RIM is having a super hero team to give us a powerful mobile tool.

    Why Blackberry 10?
    QNX (Best Real time OS) + QT (Best C++ opensource Application development framework) + Cascades (Best UI Framework) + BB Native app integration + High data efficiency (patented compression mechanism) + High battery efficiency ( push technologies and acquisition of Paratek ) + High security  + High Social connectivity (FB, Twitter,BBM,  Social calendaring , Social gaming etc) +  cloud storage (Newbay acqusition).





    My PhoneGap Experience

    PhoneGap (was called by the name Apache Callback, but now Apache Cordova) is an open-source mobile development framework produced by Nitobi, purchased by Adobe Systems. It enables software programmers to build applications for mobile devices using JavaScriptHTML5 and CSS3, instead of lower-level languages such as Objective-C.The resulting applications are hybrid, meaning that they are neither truly native (all layout rendering is done via the webview instead of the platform's native UI framework) nor purely web based (they are not just web apps but packed for appstore distribution, and have access to part of the device application programming interface).
    The mobile framework allows web developers to natively target all smartphones with a single codebase (JavaScriptHTML and CSS) by enabling a Foreign Function Interface (FFI) to an embedded WebView or Webkit on the device.



    PhoneGap currently supports development for the operating systems Apple iOS, Google Android, HP webOS, Microsoft Windows Phone, Nokia Symbian OS and RIMBlackBerry. Support for recent versions, such as BlackBerry 5 and 6 and Windows Phone 7, is being implemented now. Bada (the operating system used by the SamsungWave S8500) support is "coming soon". The table below is a list of supported features for each operating system.

    FeatureiPhone /iPhone 3GiPhone 3GS and newerAndroid robot.svg
    Android 1.0 – 4.0
    Windows Phone 7Blackberry Logo.svg
    5.x–6.0+
    Blackberry Logo.svg
    4.6–4.7
    Bada operating system.png
    Bada
    SymbianHP D B RGB 72 MX+space.png
    webOS
    Tizen logo
    Tizen
    AccelerometerYesYesYesYesYesN/AYesYesYesN/A
    CameraYesYesYesYesYesN/AYesYesYesN/A
    CompassN/AYesYesYesN/AN/AYesN/AN/AN/A
    ContactsYesYesYesYesYesN/AYesYesN/AN/A
    FileYesYesYesYesYesN/AN/AN/AN/AN/A
    GeolocationYesYesYesYesYesYesYesYesYesN/A
    MediaYesYesYesYesN/AN/AN/AN/AN/AN/A
    NetworkYesYesYesYesYesYesYesYesYesN/A
    Notification (alert)YesYesYesYesYesYesYesYesYesN/A
    Notification (sound)YesYesYesYesYesYesYesYesYesN/A
    Notification (vibration)YesYesYesYesYesYesYesYesYesN/A
    StorageYesYesYesYesYesN/AN/AYesYesN/A
    Barcode scannerYesYesYesN/AYesYesN/AN/AN/AN/A

    • I have published my PhoneGap project in Google Play.Its a yoga guide called, Abacus Yoga Guide

    MVC - MVP : Difference between these design patterns?

    In traditional UI development - developer used to create a  View  using window or usercontrol or page and then write all logical code ...