我正在尝试制作一个应用程序,用于在用户假定服用药物的特定时间安排警报。我已经完成了大多数指南所做的一切,文档说它需要设置警报。这是我在用户按下按钮时调用的方法:
import moment from 'moment';
这是AlarmReceiver.class
private void scheduleAlarm() {
Intent intentAlarm = new Intent(this, AlarmReceiver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this, alarmeID, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmeTime.getTimeInMillis(), pIntent);
}
}
我将这两行放在清单中:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone ringtone = RingtoneManager.getRingtone(context, notification);
ringtone.play();
}
然而,我的申请无效。警报不会响起。我究竟做错了什么?还需要什么?
答案 0 :(得分:1)
您正在播放来自BroadcastReceiver的闹钟铃声。您可以打开一个活动并从那里开始播放闹铃音,而不是这样做。您可以使用stop()方法停止它(可能来自活动中的按钮点击)。
<强>广播接收器强>
@Override
public void onReceive(Context context, Intent intent) {
//start activity
Intent i = new Intent(CurrentActivity.this, NextActivity.class);
context.startActivity(i);
}
<强> NextActivity.class 强>
//在这里开始你的铃声
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone ringtone = RingtoneManager.getRingtone(context, notification);
ringtone.play();
//Somewhere inside button click
{
ringtone.stop();
}
只是复制粘贴这不起作用。我相信你可以从中获取概念 在这里根据您的要求实施。
目前没有任何相关代码可以阻止你的铃声。
答案 1 :(得分:0)
好吧,我不确定你是不是想问如何停止闹钟?或者无论如何在用户按下按钮后警报根本不起作用。 我用重复警报替换了警报并使用onCreate方法启动了它,我关闭了应用程序,等待警报响起,它就完成了! 这是我的代码以防万一:
private void scheduleAlarm() {
Intent intentAlarm = new Intent(this, AlarmReceiver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this, uniqueID, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// alarmManager.set(AlarmManager.RTC_WAKEUP, 10000, pIntent);
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000, 1000, pIntent);
}
我从上面的代码中复制并粘贴的所有其他内容。 编辑:如果您正在寻找重复警报,那么此页面将转到: https://developer.android.com/training/scheduling/alarms.html 注意:我的虚拟设备API是24
答案 2 :(得分:-1)
更改以下代码 -
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000*60, pIntent);
可能是你的alarmeTime.getTimeInMillis()没有正确设置。你可以试试上面这行。它会在1分钟后发出警报。