gpt4 book ai didi

android - 将应用程序置于最前面,打开显示并从 AlarmManager 解锁?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:11:28 24 4
gpt4 key购买 nike

当我设置的闹钟激活时,我想打开显示屏、解锁手机并将我的应用程序调到前面。

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();
}
}

我的 CountDownTimer 的振动器已激活,但显示屏没有打开...

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);
}
}

附带说明一下,我想播放“阳性”警报声。我该怎么做?

最佳答案

您应该使用 PowerManager.ACQUIRE_CAUSES_WAKEUP 和 PowerManager.FULL_WAKE_LOCK 获取唤醒锁。

WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TRAININGCOUNTDOWN"); 

另请记住,如果您在调用 startActivity() 后立即释放唤醒锁, Activity 可能不会启动,因为它是异步调用。我建议使用 WakefulServiceIntentPowerManager.WakeLock.acquire(长时间超时)

关于android - 将应用程序置于最前面,打开显示并从 AlarmManager 解锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8572449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com