2016-03-06 237 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瞭解更多信息。

相關問題