我目前正在为 android 开发一个闹钟应用程序(是的,我知道我不是唯一的一个)。我是 Android 开发的新手,但我已经完成了应用程序的核心,我只需要一件事。能够设置闹钟(在 x-y-z 时间),一旦闹钟响起,即使手机处于 sleep 状态(显然没有关闭)也能开始 Activity ,剩下的就完成了。
现在我阅读了开发人员指南,我相信要走的路是通过 BroadcastReceiver 然后应该使用 intentSender 来启动 Activity ,但我似乎无法找到任何示例或类似的帖子来至少得到一个想法。
现在我已经让 AlarmManager 工作,实际上是在唤醒 Activity 时工作,但只有在手机完全清醒时才会工作,如果睡着则什么也没有,或者至少直到手机解锁。
有什么建议吗?如果需要可以发布代码示例。提前致谢
更新
@Joel 感谢您的回复。我实际上已经阅读了有关 PowerManager.WakeLock 的信息,但很高兴您将我重定向到它的方式。现在这是我为接收 Activity 提出的(可能有误,但请耐心等待)
public class OnAlarmActivity extends Activity {
MediaPlayer mpAlarm;
MediaPlayer mpButton;
PowerManager.WakeLock wl;
private BroadcastReceiver theReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
wl.acquire();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.on_alarm);
mpAlarm = MediaPlayer.create(this, R.raw.filename);
mpAlarm.start();
mpButton = MediaPlayer.create(this, R.raw.buttonfilename);
ImageView imgForAlarmScreen= (ImageView)findViewById(R.id.oftheimage);
Animation myFadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
imgForAlarmScreen.startAnimation(myFadeInAnimation); //animation for ImageView
Button bNextActivity = (Button)findViewById(R.id.ofthebutton);
bNextActivity.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mpButton.start();
startActivity(new Intent("com.myapps.otheractivity"));
}
});
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
mpAlarm.start();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
mpAlarm.pause();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
mpAlarm.start();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
wl.release();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mpAlarm.release();
}
}
现在这一切,但除非手机处于 Activity 状态(唤醒),否则它不会唤醒,甚至不会发出声音。关于如何有效使用唤醒锁的任何想法?
最佳答案
我相信您需要的系统服务是PowerManager.WakeLock
。在 google 或 stack overflow 上搜索这个,你可能会得到你需要的东西。
关于android - 如何从 BroadcastReceiver 启动 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5949841/