Tôi muốn bật màn hình, mở khóa điện thoại và đưa ứng dụng của tôi lên phía trước, khi báo thức tôi đã đặt kích hoạt.Đưa ứng dụng lên phía trước, bật màn hình và mở khóa từ AlarmManager?
public class CountDownAlarm extends BroadcastReceiver {
public CountDownAlarm(){ }
public CountDownAlarm(Context context, int timeoutInSeconds){
AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, CountDownAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, timeoutInSeconds);
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent);
}
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP, "TRAININGCOUNTDOWN");
wl.acquire();
Intent i = new Intent(context, MyActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
context.startActivity(i);
wl.release();
}
}
Các rung từ CountDownTimer tôi được kích hoạt, nhưng màn hình không bật ...
public class MyActivity extends Activity implements OnClickListener {
@Override
public void onClick(View arg0) {
timer = new CountDownTimer(countDown*1000, 1000) {
public void onTick(long millisUntilFinished) {
activeBtn.setText(String.valueOf(millisUntilFinished/60000) + ":" +
String.format("%02d", (millisUntilFinished % 60000)/1000));
}
public void onFinish() {
activeBtn.setText("0:00");
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(1000);
ringtone = RingtoneManager.getRingtone(getApplicationContext(),
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
if (ringtone != null) {
ringtone.play();
}
new AlertDialog.Builder(MyActivity.this)
.setMessage("Time's up!")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
}).show();
}
}.start();
new CountDownAlarm(this, countDown);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Trên một mặt lưu ý, tôi muốn chơi "tích cực" âm thanh báo động. Làm thế nào để tôi làm điều này?
Cảm ơn! Bây giờ màn hình bật, nhưng làm cách nào để mở khóa màn hình? –
bạn có thể thử loại bỏ khóa khóa http://stackoverflow.com/questions/4352548/how-to-unlock-the-screen-when-broadcastreceiver-is-called – bart
@bart, bạn có thể giải thích cách đi xuống PowerManager.WakeLock.acquire (long timeout) tuyến đường. Vẫn còn một chút bối rối. – MobileMon