Sunday, August 2, 2015

Display Time using Broadcast Receiver in Android

In this application, we will learn how to use broadcast services and how to perform action in every minute. We used one analog clock and one text view to display time. Create a new project, open XML file and drop one analog clock and one text view in relative layout. The code of android XML file is given below:

Display time using Broadcast receiver in Android
Broadcast Receiver Android Example

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  android:background="#abc" >
<AnalogClock
  android:id="@+id/analogClock1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignTop="@+id/textfield"
  android:layout_centerHorizontal="true"
  android:layout_marginTop="24dp" />
<TextView
  android:id="@+id/textView1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@+id/analogClock1"
  android:layout_centerHorizontal="true"
  android:layout_marginTop="30dp"
  android:textStyle="bold"
  android:textSize="25sp"
  android:text="Current time is processing ...." />
</RelativeLayout>

Now open your Java file and use broadcast class just like in the previous example but here we are registering broadcast object with time tick intent filter which will be used to get updates every minute. The code is almost similar to the previous example except for the code in onReceive() method. First onCreate() method will be called, then after one minute onReceive() method will be called which will display time on Toast and Textview and this method will be called every minute. The code of the android Java file is given below:

package com.smr.check_out_time; // Your Package name
import java.util.Calendar;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
  Context context=null;
  //broadcast class is used as nested class
  private BroadcastReceiver mtimeInfoReceiver = new BroadcastReceiver(){
  @Override
  public void onReceive(Context c, Intent i) {
  //initialize objects
  TextView textv=(TextView)findViewById(R.id.textView1);
  Calendar calendar=Calendar.getInstance();
  //display time on toast
  Toast.makeText(getApplicationContext(), "current time is--- :-"+calendar.getTime(), Toast.LENGTH_LONG).show();
  //set time on text view
  textv.setText(""+calendar.getTime());
  }
 };
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //use action time tick for getting update every minute
  IntentFilter mTime = new IntentFilter(Intent.ACTION_TIME_TICK);
  //register broadcast receiver
  registerReceiver(mtimeInfoReceiver, mTime);
  }
} 

Now run your project and test application.

No comments:

Post a Comment