我在做其中的應用程序:爲什麼BroadcastReceiver在過去的時間正在初始化?
- 從輸入用戶的時間範圍......(初始時間,最終時間)假設用戶給出(18:00至07:00 PM)
- 當電話的當前時間等於初始時間然後手機的靜音模式激活。
一切工作正常,如果時間範圍爲未來的(如果我的手機時間是以前05:00 PM在上述情況下):
- 比方說我的手機目前的電話時間08: 00 PM我的時間範圍從(06:00 PM至07:00 PM)。然後,在當前時間(08:00 PM),手機的靜音模式啓動。應該激活第二天...
我已經爲這樣的服務...
每當用戶輸入的時間範圍內啓動一個服務在onStart和onStartCommand被覆蓋......
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
ArrayList<HashMap<String, String>> arraylist_start = (ArrayList<HashMap<String, String>>) intent.getSerializableExtra("arraylist_start");
if(arraylist_start != null){
try {
silentModeOnBroadCastReceiver.startAlarmAt(this, arraylist_start);
silentModeOffBroadCastReceiver.startAlarmOff(this, arraylist_start);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
在arraylist_start我正在採取的時間列表,從意圖的範圍,其中用戶添加時間範圍......相同的代碼寫在onStartCommand
在SilentModeOnBroadCastReceiver我已經添加startAlarmAt方法,TA KES該ArrayList和調用SilentModeOnBroadCastReceiver
public void onReceive(Context context, Intent intent)
{
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();
// Put here YOUR code.
Toast.makeText(context, "Silent Activated !!!!!!!!!!", Toast.LENGTH_LONG).show();
Silent silent = new Silent(context);
silent.activateAudioMode(AudioManager.RINGER_MODE_SILENT);
wl.release();
}
未決的意圖
public void startAlarmAt(Context context, ArrayList<HashMap<String, String>> list) throws ParseException {
Calendar calendar = Calendar.getInstance();
for (int j = 0; j < list.size(); j++){
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String timeStart = list.get(j).get("timeStart");
date1 = Calendar.getInstance();
date2 = Calendar.getInstance();
date1.setTime(dateFormat.parse(timeStart));
Log.i("Date1Time", date1.toString());
int hours = date1.get(Calendar.HOUR_OF_DAY);
int minutes = date1.get(Calendar.MINUTE);
calendar.set(Calendar.HOUR_OF_DAY, hours);
calendar.set(Calendar.MINUTE, minutes);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, SilentModeOnBroadCastReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, j, i, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, date1.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
}
}
現在請大家幫忙解決我的問題...爲什麼廣播接收器是在過去的時間初始化?
感謝您的回覆......這是不工作...我將它轉換成代碼 –
實際上它是DATE1對此我setRepeating ...它的時間必須由有一天會增加,對吧? –
我已經在startAlarmAt()方法中添加了這段代碼..但是仍然不能工作? –