请帮我写完整的可以运行的代码。利用一个Timepicker控件和一个imagebutton实现闹钟功能。通过点击按钮,开启闹钟,当到达Timepicker上的时间后,播放MP3音乐;再次点击按钮,关闭闹钟和关闭铃声,如再次点击则又开启闹钟。
时间: 2023-03-27 16:00:38 浏览: 60
好的,以下是可以运行的代码:
```
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TimePicker;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private TimePicker timePicker;
private ImageButton imageButton;
private MediaPlayer mediaPlayer;
private PendingIntent pendingIntent;
private AlarmManager alarmManager;
private boolean isAlarmSet = 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 view) {
if (!isAlarmSet) {
setAlarm();
} else {
cancelAlarm();
}
}
});
}
private void setAlarm() {
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, );
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, , intent, );
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Toast.makeText(MainActivity.this, "闹钟已设置", Toast.LENGTH_SHORT).show();
isAlarmSet = true;
imageButton.setImageResource(R.drawable.ic_alarm_off);
}
private void cancelAlarm() {
alarmManager.cancel(pendingIntent);
mediaPlayer.stop();
Toast.makeText(MainActivity.this, "闹钟已取消", Toast.LENGTH_SHORT).show();
isAlarmSet = false;
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.start();
}
}
}
```
这个代码使用了一个TimePicker控件和一个ImageButton控件,通过点击ImageButton控件来开启或关闭闹钟。当闹钟时间到达时,会播放一个MP3音乐。如果再次点击ImageButton控件,则会取消闹钟和关闭铃声。