Làm thế nào xây dựng dịch vụ báo động dùng AlarmManager

Một phần của tài liệu tìm hiểu về android (Trang 67 - 72)

AlarmManager

AlarmManager class cung cấp truy cập vào các dịch vụ hệ thống báo động. Điều này cho phép bạn lên lịch các ứng dụng của bạn để chạy vào một số điểm trong tương lai. Ngay cả khi báo thức đã tắt, và đã được đăng ký với dịch vụ của hệ thống, nó sẽ tự động khởi động ứng dụng khi nó chưa được chạy.

Sửa đổi main.xml có hai nút Start và Cancel các báo động. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/startalarm" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Start" /> <Button android:id="@+id/cancelalarm" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Cancel" /> </LinearLayout>

package com.android.sample.AndroidAlarmService; import java.util.Calendar; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.os.SystemClock; import android.view.View; import android.widget.Button; import android.widget.Toast;

public class AndroidAlarmService extends Activity { private PendingIntent pendingIntent;

/** Called when the activity is first created. */ @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button buttonStart = (Button)findViewById(R.id.startalarm); Button buttonCancel = (Button)findViewById(R.id.cancelalarm);

buttonStart.setOnClickListener(new Button.OnClickListener(){ @Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class);

pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0);

AlarmManager alarmManager =

(AlarmManager)getSystemService(ALARM_SERVICE); Calendar calendar = Calendar.getInstance();

calendar.add(Calendar.SECOND, 10);

alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

Toast.makeText(AndroidAlarmService.this, "Start Alarm", Toast.LENGTH_LONG).show();

}});

buttonCancel.setOnClickListener(new Button.OnClickListener(){ @Override

public void onClick(View arg0) {

// TODO Auto-generated method stub AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); alarmManager.cancel(pendingIntent); // Tell the user about what we did.

Toast.makeText(AndroidAlarmService.this, "Cancel!", Toast.LENGTH_LONG).show();

}}); } }

}

MyAlarmService.java, nó sẽ bắt đầu trong 10 giây được kích hoạt bởi SlarmManager

package com.android.sample.AndroidAlarmService;

import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.widget.Toast;

public class MyAlarmService extends Service {

@Override (adsbygoogle = window.adsbygoogle || []).push({});

public void onCreate() {

// TODO Auto-generated method stub

Toast.makeText(this, "MyAlarmService.onCreate()", Toast.LENGTH_LONG).show();

@Override

public IBinder onBind(Intent intent) { // TODO Auto-generated method stub

Toast.makeText(this, "MyAlarmService.onBind()", Toast.LENGTH_LONG).show();

return null; }

@Override

public void onDestroy() {

// TODO Auto-generated method stub super.onDestroy();

Toast.makeText(this, "MyAlarmService.onDestroy()", Toast.LENGTH_LONG).show();

}

@Override

public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId);

Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG).show();

}

@Override

public boolean onUnbind(Intent intent) { // TODO Auto-generated method stub

Toast.makeText(this, "MyAlarmService.onUnbind()", Toast.LENGTH_LONG).show();

return super.onUnbind(intent); }

}

Cuối cùng, sửa đổi AndroidManifest.xml liệt kê như là dịch vụ.

<?xml version="1.0" encoding="utf-8"?>

Một phần của tài liệu tìm hiểu về android (Trang 67 - 72)