请帮我写完整的可以运行的代码。利用一个Timepicker控件和一个imagebutton实现闹钟功能。通过点击按钮,开启闹钟,当到达Timepicker上的时间后,播放MP3音乐;再次点击按钮,关闭闹钟和关闭铃声,如再次点击则又开启闹钟。
时间: 2023-03-27 15:00:37 浏览: 43
好的,以下是可以运行的代码:
```
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_sound);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isAlarmSet) {
// 关闭闹钟和铃声
alarmManager.cancel(pendingIntent);
mediaPlayer.stop();
mediaPlayer.reset();
isAlarmSet = false;
Toast.makeText(MainActivity.this, "闹钟已关闭", Toast.LENGTH_SHORT).show();
} else {
// 开启闹钟
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
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);
mediaPlayer.start();
isAlarmSet = true;
Toast.makeText(MainActivity.this, "闹钟已开启", Toast.LENGTH_SHORT).show();
}
}
});
}
}
```
请注意,这段代码需要在 Android Studio 中运行,并且需要在布局文件中添加一个 TimePicker 控件和一个 ImageButton 控件。此外,还需要创建一个 AlarmReceiver 类来接收闹钟广播并播放铃声。