1

我正在开发一个基于位置的警报,它是一个 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();
4

3 回答 3

1

我很确定您正在寻找服务。

复制并粘贴:

服务是一个应用程序组件,代表应用程序希望在不与用户交互的情况下执行更长时间运行的操作,或提供功能供其他应用程序使用。每个服务类必须在其包的 AndroidManifest.xml 中有相应的声明。可以使用 Context.startService() 和 Context.bindService() 启动服务。

于 2012-05-18T20:04:33.117 回答
1

使用通知服务来跟踪状态.....访问...... http://developer.android.com/guide/topics/ui/notifiers/notifications.html

于 2013-05-10T08:16:22.187 回答
0

执行此操作的正确方法需要几个步骤。抱歉,如果您以前没有做过,这并非易事:

首先,您将使用 Android 的内置功能AlarmManager来安排您希望激活应用的时间。您安排了一个新的闹钟,其中包含起床时间和PendingIntent.

其次,创建PendingIntent用于激活您的应用程序以显示警报的时间。

第三,你可以通过几种方式来处理这个Intent,最常见的是创建一个扩展类BroadcastReceiver来接收Intent。当该显示警报时,会通知此类。您创建并放入 PendingIntent 的 Intent 将传递给它的onReceive()方法。您将此信息传递给您的应用程序以显示警报对话框。--- 您也可以只注册您的主应用程序以接收 Intent,然后onNewIntent(Intent)在您的 Activity 中覆盖该方法。

四,BroadcastReceiver在您的AndroidManifest.xml文件中注册您的。这也是注册此接收器以侦听您创建的 Intent 的地方。您可以使用<intent-filter>标签执行此操作。

五,(可选)如果您希望即使手机处于睡眠状态也能显示闹钟,并且您想确保在用户确认闹钟之前它不会重新进入睡眠状态,您需要获取 WAKE_LOCK 来执行所以。

这比使用服务更可取的原因是它不会仅仅为了等待警报而消耗资源,而且如果 Android 决定终止您的应用程序以释放内存,它仍然可以工作。祝你好运,编码愉快!

于 2012-05-18T20:40:38.823 回答