请写出可以运行的代码,利用一个Timepicker控件和一个imagebutton实现闹钟功能。首先获取Timepicker选择的时间,通过点击按钮,开启闹钟,当到达Timepicker上的时间后,播放MP3音乐;再次点击按钮,关闭闹钟和关闭铃声,如再次点击则又开启闹钟。
时间: 2023-03-27 21:00:33 浏览: 48
以下是可以实现闹钟功能的代码:
```
public class MainActivity extends AppCompatActivity {
private TimePicker timePicker;
private ImageButton imageButton;
private MediaPlayer mediaPlayer;
private boolean isAlarmOn = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timePicker = findViewById(R.id.timePicker);
imageButton = findViewById(R.id.imageButton);
mediaPlayer = MediaPlayer.create(this, R.raw.alarm);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isAlarmOn) {
// 关闭闹钟和铃声
isAlarmOn = false;
mediaPlayer.stop();
mediaPlayer.reset();
imageButton.setImageResource(R.drawable.ic_alarm_off);
} else {
// 开启闹钟和铃声
isAlarmOn = true;
int hour = timePicker.getCurrentHour();
int minute = timePicker.getCurrentMinute();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, );
long alarmTime = calendar.getTimeInMillis();
long currentTime = System.currentTimeMillis();
if (alarmTime < currentTime) {
alarmTime += 24 * 60 * 60 * 100;
}
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, , intent, );
alarmManager.setExact(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent);
imageButton.setImageResource(R.drawable.ic_alarm_on);
}
}
});
}
public static class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 播放铃声
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.alarm);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
}
}
```