关于Android Studio制作的闹钟有时无法响铃的问题
程序员文章站
2022-03-11 21:58:30
参考网络上的一些教程制作的闹钟,为什么有时候无法响铃?辛苦大家帮忙看一下,指出一下问题。package com.example.clock3;import androidx.annotation.RequiresApi;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;import android.app.AlarmManager;import android.app....
参考网络上的一些教程制作的闹钟,为什么有时候无法响铃?辛苦大家帮忙看一下,指出一下问题。
package com.example.clock3;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.app.AlarmManager;
import android.app.DatePickerDialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private Button btnStart, btnStop;
private TextView tvInfo;
private PendingIntent pendingIntent;
private AlarmManager alarmManager;
private Calendar calendar = Calendar.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = findViewById(R.id.btnStart);
btnStop = findViewById(R.id.btnStop);
tvInfo = findViewById(R.id.tvInfo);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this, ClockActivity.class);
pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
btnStart.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(View v) {
calendar.setTimeInMillis(System.currentTimeMillis());
final Calendar currentTime = Calendar.getInstance();//用于存放时间选择器中的默认时间(当前时间)
new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@SuppressLint("SetTextI18n")
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// long sysTime=System.currentTimeMillis();//取出当前的时间毫秒值。
calendar.set(Calendar.HOUR, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
// long selTime=calendar.getTimeInMillis();//取出设置时间的毫秒值。
// if(sysTime>selTime){
// c.add(Calendar.DAY_OF_MONTH,1);
// }
if (minute < 10) {
if (hourOfDay < 10) {
tvInfo.append("0" + hourOfDay + ":0" + minute);
} else {
tvInfo.append(hourOfDay + ":0" + minute);
}
} else {
if (hourOfDay < 10) {
tvInfo.append("0" + hourOfDay + ":" + minute);
} else {
tvInfo.append(hourOfDay + ":" + minute);
}
}
Toast.makeText(MainActivity.this, (int) (calendar.getTimeInMillis() / (1000 * 60)), Toast.LENGTH_LONG).show();
}
}, currentTime.get(Calendar.HOUR_OF_DAY), currentTime.get(Calendar.MINUTE), true).show();
new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
String text = year + "年" + (month + 1) + "月" + dayOfMonth + "日";
Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month + 1);
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
tvInfo.setText("你设置的闹钟时间为:" + year + "年" + (month + 1) + "月" + dayOfMonth + "日");
}
}
, currentTime.get(Calendar.YEAR)
, currentTime.get(Calendar.MONTH)
, currentTime.get(Calendar.DAY_OF_MONTH)).show();
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
});
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alarmManager.cancel(pendingIntent);
tvInfo.setText("你未设置闹钟");
}
});
}
}
本文地址:https://blog.csdn.net/weixin_45877890/article/details/108126908
下一篇: Android自定义实现漂亮的软键盘