更新:終於到了測試。沒有工作。更改了一些代碼,明天再試。應用程序不在指定時間靜音
在我的MainActivity中,我讓程序從JSON數據中檢索時間數據並將它們存儲到變量中。然後我調用這個方法,將6種不同的時間分別分成幾個小時和幾分鐘,然後將它們相乘,這樣就可以毫秒爲單位,然後在AlarmManager.RTC_WAKEUP
中使用它們。下面是在MainActivity代碼:
mPrayerTime = (Button) findViewById(R.id.muteButton);
mPrayerTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new fajrModel();
new shurooqModel();
new dhuhrModel();
new asrModel();
new maghribModel();
new ishaModel();
AlarmManager falarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
AlarmManager salarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
AlarmManager dalarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
AlarmManager aalarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
AlarmManager malarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
AlarmManager ialarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this, AlarmReciever.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
//setting up calender for times.
Calendar fcal = Calendar.getInstance();
SimpleDateFormat fTime = new SimpleDateFormat("h:mm a", Locale.ENGLISH);
try {
fcal.setTime(fTime.parse(fajr));
} catch (ParseException e) {
e.printStackTrace();
}
Calendar dcal = Calendar.getInstance();
SimpleDateFormat dTime = new SimpleDateFormat("h:mm a", Locale.ENGLISH);
try {
dcal.setTime(dTime.parse(dhuhr));
} catch (ParseException e) {
e.printStackTrace();
}
Calendar scal = Calendar.getInstance();
SimpleDateFormat sTime = new SimpleDateFormat("h:mm a", Locale.ENGLISH);
try {
scal.setTime(sTime.parse(shurooq));
} catch (ParseException e) {
e.printStackTrace();
}
Calendar acal = Calendar.getInstance();
SimpleDateFormat aTime = new SimpleDateFormat("h:mm a", Locale.ENGLISH);
try {
acal.setTime(aTime.parse(asr));
} catch (ParseException e) {
e.printStackTrace();
}
Calendar mcal = Calendar.getInstance();
SimpleDateFormat mTime = new SimpleDateFormat("h:mm a", Locale.ENGLISH);
try {
mcal.setTime(mTime.parse(maghrib));
} catch (ParseException e) {
e.printStackTrace();
}
Calendar ical = Calendar.getInstance();
SimpleDateFormat iTime = new SimpleDateFormat("h:mm a", Locale.ENGLISH);
try {
ical.setTime(iTime.parse(isha));
} catch (ParseException e) {
e.printStackTrace();
}
Log.d("fajr", String.valueOf(ical));
/*FAJR
*/
falarmManager.setExact(AlarmManager.RTC_WAKEUP, fcal.getTimeInMillis(), pendingIntent);
//SHUROOQ
salarmManager.setExact(AlarmManager.RTC_WAKEUP, scal.getTimeInMillis(), pendingIntent);
//Dhuhr
dalarmManager.setExact(AlarmManager.RTC_WAKEUP, dcal.getTimeInMillis(), pendingIntent);
//ASR
aalarmManager.setExact(AlarmManager.RTC_WAKEUP, acal.getTimeInMillis(), pendingIntent);
//MAGHRIB
malarmManager.setExact(AlarmManager.RTC_WAKEUP, mcal.getTimeInMillis(), pendingIntent);
//ISHA
ialarmManager.setExact(AlarmManager.RTC_WAKEUP, ical.getTimeInMillis(), pendingIntent);
}
});
}
AlarmReceiver.java:
public class AlarmReciever extends WakefulBroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();
AudioManager silent = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
silent.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
}
它確實沒有這樣的事情。它在那些時候將手機靜音,並且爲了測試它,我必須構建APK並將其放在手機上,並等待指定的時間,並且不發生任何事情。我在哪裏出了問題
TLDR:即使應該在特定的時間,代碼也不會使手機靜音。
請停止這種標記由於Android工作室。這與您正在使用的IDE無關。 – Henry