设置android闹钟,它不会在合适的时间显示

时间:2016-04-28 02:11:48

标签: android

我设置闹钟并设置启动时间,但闹钟开始时间延迟几分钟或几秒。我在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);
}

1 个答案:

答案 0 :(得分:0)

你没有设置第二个。因此,警报将在您设置的当前秒开始,并且似乎会延迟