2016-04-28 7 views
-3

ich einen Alarm einstellen und Zeit einstellen, wenn es beginnt, aber der Alarm begann mit ein paar Minuten oder Sekunden verzögert.Ich benutze die setWindow auf Android 4.4 + und es ist alles nutzlos, wie man es zur richtigen Zeit startet.Set Android Alarm und es zeigt nicht zur richtigen Zeit

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

Verwenden Sie die 'AlarmManager # setExact()' Methode, wenn sie zu einem bestimmten Zeitpunkt ausgelöst werden soll. –

+0

immer noch nicht genau ausgeführt – user5607014

+0

Dann stellen Sie uns mit einem [MCVE]. Niemand möchte Code-Seiten durchsuchen, um herauszufinden, warum. –

Antwort

0

Sie haben den zweiten nicht gesetzt. Der Alarm wird also zur aktuellen Sekunde in der von Ihnen festgelegten Zeit gestartet und scheint verzögert zu sein.

+0

aber manchmal fängt es ein paar Minuten später an .... – user5607014

Verwandte Themen