gpt4 book ai didi

android - 警报应用程序不准确

转载 作者:搜寻专家 更新时间:2023-11-01 08:38:26 24 4
gpt4 key购买 nike

我正在为 Android 创建闹钟应用程序,出于某种原因,我的闹钟总是有 20-60 秒的延迟。我不知道为什么会这样,因为我对 API 19+ 使用 setExact() 方法

我的代码:

private void setAlarm() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mHour = mTimePicker.getHour();
mMinutes = mTimePicker.getMinute();
} else {
mHour = mTimePicker.getCurrentHour();
mMinutes = mTimePicker.getCurrentMinute();
}

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, mHour);
calendar.set(Calendar.MINUTE, mMinutes);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent alarmIntent = new Intent(EditAlarm.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(EditAlarm.this, 0, alarmIntent, 0);


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}

}

报警接收器

public class AlarmReceiver extends WakefulBroadcastReceiver {

public AlarmReceiver() {
}

@Override
public void onReceive(final Context context, Intent intent) {

Toast.makeText(context, "Alarm works", Toast.LENGTH_LONG).show();
Intent alarmIntent = new Intent(context, AlarmActivity.class);
alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(alarmIntent);
}

警报 Activity

public class AlarmActivity extends AppCompatActivity {
private Vibrator mVibrator;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm);
final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);


// The ringing effects
Uri alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
if (alarmUri == null) {
alarmUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
}
Ringtone ringtone = RingtoneManager.getRingtone(this, alarmUri);
ringtone.play();
mVibrator = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
long[] pattern = { 0, 300, 200, 300, 100, 100 };
mVibrator.vibrate(pattern, 0);

// UI
Button stopButton = (Button) findViewById(R.id.finishButton);
stopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mVibrator.cancel();
finish();
}
});
}

我做错了什么?提前致谢;)

最佳答案

要解决此问题,您还需要设置秒数。您需要将其设置为零才能在指定的分钟数到达时触发它:

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, mHour);
calendar.set(Calendar.MINUTE, mMinutes);
calendar.set(Calendar.SECOND, 0);

关于android - 警报应用程序不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34638494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com