我设置闹钟并设置启动时间,但闹钟开始时间延迟几分钟或几秒。我在android 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);
}
答案 0 :(得分:0)
你没有设置第二个。因此,警报将在您设置的当前秒开始,并且似乎会延迟