2016-03-06 229 views
0

我有一个AlarmManager API的问题,它根本不会在我的三星设备上触发,但它适用于其他Android设备...AlarmManager不能在Android棒棒糖上使用samsung设备5.0.2

我的代码是这样的:

public void setAlarm(int hourAlarm, int minutesAlarm, int numeroAlarm, boolean yesOrNoRepeatAlarm) { 


    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, numeroAlarm, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

    Log.i("numeroAlarm", numeroAlarm + ""); 
    Calendar calendar = Calendar.getInstance(); 

    if((calendar.get(Calendar.HOUR_OF_DAY) > hourAlarm) || 
      (calendar.get(Calendar.HOUR_OF_DAY) == hourAlarm && calendar.get(Calendar.MINUTE) > minutesAlarm)) { 

     calendar.add(Calendar.DATE, 1); 
    } 

    calendar.set(Calendar.HOUR_OF_DAY, hourAlarm); 
    calendar.set(Calendar.MINUTE, minutesAlarm); 

    Log.i("timeInMillis", calendar.getTimeInMillis() + ""); 
    Log.i("repeatingAlarm", yesOrNoRepeatAlarm + ""); 

    if(yesOrNoRepeatAlarm) { 

     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 
    } 
    else { 

     alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
    } 

} 

它完美对其他设备(特别是在奇巧),但不是棒棒糖在我的三星设备, 你有什么想法吗?

+1

如果我猜,你正在被三星专有的电池扩展技术,类似于在在Android 6.0是什么打盹模式咬伤。搜索设备的电池/电源设置,并查看是否可以查看是否启用了该功能。如果是,请禁用它(或将您的应用程序白名单,如果这是一个选项)并重新运行您的测试。如果你的代码现在可以工作,你就知道你的困难来源。除了Android 6.0以外,SONY设备和其他可能的功能也有类似的功能。 – CommonsWare

回答

3

我有同样的问题和大量的搜索和解决方法后,我想通三星设备的聪明经理Lollipop及以上可能是问题。此组件可以延迟闹钟管理器关闭,3分钟后触发,手机正在使用电池并且屏幕关闭时触发。当然,你可以禁用智能管理器看看this

  • 启动设备
  • 点击电池
  • 点击应用优化
  • 详细
  • 三星智能管理器应用程序查找应用
  • 选择 “已禁用的”

但在我的情况下,它不起作用,既不禁用智能管理器在两台三星设备Lollipop工作。什么它做的工作是通过重构我的应用程序包的名称中包含String“警告”或“警报”,例如com.example.alarm.myApplication“傻瓜”智能管理器。你也可以参考这个link了解更多信息。

相关问题