我正在开发一个基于位置的闹钟,这是一个Android应用程序。
所有编码部分都已完成。
但应用程序关闭时,不会显示警报提示对话框。
请帮助我,即使用户正在使用其他应用程序或在主屏幕中,我也会尝试弹出警报。
此时我的闹钟代码如下所示:
final MediaPlayer mp = MediaPlayer.create(LocAlarmProject.this, R.raw.airtel);
mp.start();
// LocAlarmProject.this below is what's causing the problem:
final AlertDialog.Builder builder=new AlertDialog.Builder(LocAlarmProject.this);
builder.setTitle(disp_title);
builder.setMessage(disp_desc);
builder.setIcon(R.drawable.alarm);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mp.stop();
}
});
builder.show();
答案 0 :(得分:1)
我很确定您正在寻找Service.
复制并粘贴:
服务是表示一个的应用程序组件 应用程序希望执行更长时间运行的操作而不是 与用户交互或为其他人提供功能 要使用的应用程序每个服务类必须具有相应的 声明在其包的AndroidManifest.xml中。服务 可以使用Context.startService()和Context.bindService()启动。
答案 1 :(得分:1)
使用通知服务跟踪状态.....访问...... http://developer.android.com/guide/topics/ui/notifiers/notifications.html
答案 2 :(得分:0)
执行此操作的正确方法需要几个步骤。对不起,如果您之前没有这样做,这不是一件轻而易举的事:
首先,您将使用Android的内置AlarmManager
来安排您希望激活应用的时间。您可以使用唤醒时间和PendingIntent
安排新闹钟。
其次,创建用于激活应用程序的PendingIntent
以显示警报。
第三,您可以通过多种方式处理此Intent,最常见的是创建一个扩展BroadcastReceiver
以接收Intent的类。在显示警报时通知此课程。您创建并放入PendingIntent的Intent将传递给其onReceive()
方法。您将此信息传递给您的应用程序以显示警报对话框。 ---您也可以注册主应用程序来接收Intent,然后覆盖Activity中的onNewIntent(Intent)
方法。
四,在BroadcastReceiver
文件中注册AndroidManifest.xml
。这也是注册此接收器以侦听您创建的Intent的地方。您可以使用<intent-filter>
标记执行此操作。
五,(可选)如果您希望即使手机处于睡眠状态也能显示闹钟,并且您希望确保在用户确认闹钟之前它不会重新进入睡眠状态,您需要获取WAKE_LOCK这样做。
这比使用服务更可取的原因是它不会消耗资源只是为了等待警报,而且如果Android决定杀死你的应用程序释放内存它仍然有效。祝你好运,编码愉快!