Saturday, 15 September 2012

Android Alarm Service


Basically if you want to start some actions at any specific time,you need to use alarm service.For example, you want to start some activity at 1.30PM, then you have to use alarm service.Before going to discuss about alarm service you need to know about Pending Intent.


Pending Intent:
       A Pending Intent is a token you give to some app to perform an action on your apps' behalf irrespective of whether your application process is alive or not.
For example , at 1.30PM you want to download some songs from any url. But at1.30PM you will not be there. So it’s need to give some one else(Alarm Manager) to start downloading my song. Since you are giving intent to Alarm Manager and intent will be pending till 1.30PM . That’s why we called it as pending intent .
Now Let’s do the programming for Alarm Service:
Step1: 
           Create a new Project AlarmTest.
Step2: 
           Here I am taking class as Home.java
Step3: 
           Go to Manifest.xml, Create a receiver(Name: Receiver1).
Step4: 
          Go to main.xml. Create a Button.
Step5: 
          Now come Back 2 Home.java(main activity). Create the AlarmManager & PendingIntent.
          
          AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Here we are calling ALARM_SERVICE by using Context and storing it in alarm manager instance.

Now we need to see about PendingIntent. Here we created Broadcast Receiver. So we need to get that Broadcast Receiver. See the bellow code:

PeningIntent pi =PendingIntent.getBroadcast(Context context, int requestCode, Intent intent, int flags)

Now Observe the Home.java

public class Home extends Activity
{
AlarmManager am;
public void onCreate(Bundle savedInstanceState)
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        Button btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener()
        {  
          public void onClick(View v)
          {
            am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
            Intent i = new Intent(getApplicationContext(), Receiver1.class);
            PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, i, 0);
            am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ 10000, pi);
            }
            }); 
    }
}
See Here in the bellow coding:

am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ 10000, pi);

Here it is telling like that Please WAKE_UP the alarm after 10 seconds. After 10 seconds Receiver1 will started.


Receiver1.java

public class Receiver1 extends BroadcastReceiver
{                      
public void onReceive(Context context, Intent intent)
            {
            Toast.makeText(context, "Receiver1 is Activated", 0).show();        
             }
}


Main.xml
<?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" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Alarm Testing" />
    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="Button" />

    </RelativeLayout>
</LinearLayout>



Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="alarm.test"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="15" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Home"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name="Receiver1"></receiver>
    </application>
</manifest>

No comments:

Post a Comment