Android中的AlarmManager

Android中的AlarmManager,android,Android,我正在做一个android定时应用程序,我使用AlarmManager,但我的闹钟不工作,以下是我的代码: 我的活动: Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR, 1); calendar.set(Calendar.SECOND, 44); calendar.set(Calendar.AM_PM, Calendar.PM); pendingIntent =

我正在做一个android定时应用程序,我使用AlarmManager,但我的闹钟不工作,以下是我的代码:

我的活动:

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR, 1);
    calendar.set(Calendar.SECOND, 44);
    calendar.set(Calendar.AM_PM, Calendar.PM);

    pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, MyBroadCastRcv.class), 0);
    getApplicationContext();
    AlarmManager alarmMngr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmMngr.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
MYRCV类别:

    public void onReceive(Context context, Intent intent)
{
    Intent serviceLauncher = new Intent(context, TimerService.class);
    context.startService(serviceLauncher);

}
我的服务:

public int onStartCommand(Intent intent, int flags, int startId)
{
    super.onCreate();
MediaPlayer player = MediaPlayer.create(this, Uri.parse("file:///mnt/sdcard/sherif/001.mp3"));

    return super.onStartCommand(intent, flags, startId);
}

public void onStart(Intent intent, int startId)
{
    System.out.println("In onStart Service");
    super.onStart(intent, startId);
    player.start();
}

我错过什么了吗

那么,您肯定不想在
onStartCommand()
中调用
super.onCreate()
。去掉那个


此外,您的
onStart()
将永远不会被调用。此方法已弃用。您需要将所有代码放入
onStartCommand()

中,这样您会收到任何错误消息或其他信息吗?不会,但在我在报警中定义的时间,声音文件不会播放,您确定吗?”file:///mnt/sdcard/sherif/001.mp3"是吗?是的,当我在没有报警功能的情况下运行服务时,它工作正常。你在真实设备或模拟器上测试过吗?因为我不相信它能在模拟器上工作。代码中有我遗漏的东西吗,因为这让我发疯,我看到的所有例子都和我做的一样
onStart()
已弃用。在
onStartCommand()
的默认实现中,它调用
onStart(),以向后兼容旧代码。但是,您已经重写了
onStartCommand()
。哦,等等。我懂了。实际上您正在调用
super.onStartCommand()`然后它将调用您的
onStart()
。这仍然是糟糕的代码。将对
player.onStart()
的调用移动到
onStart命令()
中,并删除
onStart()
方法。声音文件立即启动的原因是你安排闹钟的方式。显然,警报马上就要响了。你是在下午1点之前还是之后测试这个?我做了你所有的建议,我现在的时间是下午3点25分,我在下午3点26分测试了它,就像它立即启动之前发生的一样!!检查您是否正确设置了日历。在设置日历后,像这样添加日志记录:
SimpleDateFormat=newsimpledateformat(“yyyy-MM-dd-KK:MM:ss-a”);Log.v(“app”,“Time is”+format.format(calendar.getTime()))