自制鬧鍾,響鈴時間總是比設置時間晚3分鍾左右?咋回事? -开发者知识库

自制鬧鍾,響鈴時間總是比設置時間晚3分鍾左右?咋回事? -开发者知识库,第1张

再簡單不過的練手項目給我整郁悶了,現在的問題時App可以運行,假如我設置鬧鈴時間為9:00,那App到了9:00它不響鈴,偏偏到了9:03才響鈴,這是咋回事?我用的真機測試的,系統時間保證沒有錯誤,時區設置也沒有錯誤。

感謝各位前輩指點 自制鬧鍾,響鈴時間總是比設置時間晚3分鍾左右?咋回事? -开发者知识库,第2张

下面是全部代碼:
MainActivity.java

public class MainActivity extends Activity {

private TimePicker timePicker;
private TextView tv_time;
private Button btn_setClock;
private AlarmManager alarmManager;
int hour;
int min;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

timePicker = (TimePicker) findViewById(R.id.timePicker);
tv_time = (TextView) findViewById(R.id.tv_time);
btn_setClock = (Button) findViewById(R.id.btn_setClock);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
hour = hourOfDay;
min = minute;
tv_time.setText(hour   " : "   min);
}
});

btn_setClock.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR, hour);
calendar.set(Calendar.MINUTE, min);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Intent intent = new Intent(MainActivity.this,
AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
MainActivity.this, 0, intent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), pendingIntent);
Toast.makeText(MainActivity.this, "ok", 1000).show();
}
});
}
}

AlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Debug", "onReceive");
Intent i = new Intent(context, AlarmActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}

AlarmActivity.java

public class AlarmActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
AlarmActivity.this);
alertDialog.setTitle("鬧鍾");
alertDialog.setMessage("時間到了!");
alertDialog.setCancelable(false);
alertDialog.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
AlarmActivity.this.finish();
}
});
alertDialog.show();
}
}

AndroidManifest.xml

<application
        ...
        <activity android:name=".AlarmActivity" >
        </activity>
        <!-- android:process=":remote": 新開一個進程 -->
        <receiver
            android:name=".AlarmReceiver"
            android:process=":remote" />
    </application>

7 个解决方案

#1


大神快來  自制鬧鍾,響鈴時間總是比設置時間晚3分鍾左右?咋回事? -开发者知识库,第3张

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复