-3
アラームを設定して起動する時刻を設定しましたが、アラームが数分または数秒遅れて開始しました。アンドロイド4.4+でsetWindowを使用しますそれは、まったく役に立たない、正しい時にそれを始める方法です。アンドロイドアラームを設定して、適切な時刻に表示しない
public class AlarmSetActivity extends Activity {
private Context context;
private AlarmManager manager;
private Intent intent;
private PendingIntent pi;
@ViewInject(R.id.activity_content_tv)
private TextView title;
@ViewInject(R.id.time_set_btn)
private Button timeSetBtn;
@ViewInject(R.id.time_set_open_che)
private CheckBox timeSetOpenCheck;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm_set);
ViewUtils.inject(this);
context = this;
manager = (AlarmManager) getSystemService(ALARM_SERVICE);
title.setText("闹钟设置 ");
intent = new Intent(context, AlarmNotifyReceiver.class);
pi = PendingIntent.getBroadcast(context, 0, intent, 0);
if (!timeSetOpenCheck.isChecked()) {
manager.cancel(pi);
}
}
@OnClick({ R.id.time_set_btn, R.id.alarm_voice_set, R.id.back_btn,
R.id.voice_set_btn })
public void onClick(View view) {
switch (view.getId()) {
case R.id.time_set_btn:
if (timeSetOpenCheck.isChecked()) {
setTime();
}
break;
case R.id.back_btn:
onBackPressed();
break;
case R.id.alarm_voice_set:
setAlarmRingtone();
break;
case R.id.voice_set_btn:
setAlarmRingtone();
break;
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
Uri uri = data
.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
RingtoneManager.setActualDefaultRingtoneUri(context,
RingtoneManager.TYPE_ALARM, uri);
}
break;
default:
break;
}
}
/**
* 闹钟的时间选择
*/
private void setTime() {
// 弹出设置时间的窗口
new TimeDialog(context).setTime(timeSetBtn);
}
/**
* 选择闹钟铃声
*/
private void setAlarmRingtone() {
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
RingtoneManager.TYPE_ALARM);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "请选择闹钟铃声");
startActivityForResult(intent, 1);
}
特定の時刻に起動させるには、 'AlarmManager#setExact()'メソッドを使用してください。 –
まだ正確に実行されていません – user5607014
[mcve]をご提供ください。なぜ誰かがコードのページを掘り起こしてその理由を見つけようとしません。 –