在Android中设置闹钟还需要什么?

时间:2017-03-23 03:55:30

标签: java android

我正在尝试制作一个应用程序,用于在用户假定服用药物的特定时间安排警报。我已经完成了大多数指南所做的一切,文档说它需要设置警报。这是我在用户按下按钮时调用的方法:

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

然而,我的申请无效。警报不会响起。我究竟做错了什么?还需要什么?

3 个答案:

答案 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分钟后发出警报。