我有一个Timepicker空件和一个imagebutton,实现选择好时间,点击imagebutton开启闹钟,到达timepicker所选的时间播放MP3音乐,再次点击imagebutton可以关闭闹钟并且暂停正在播放的MP3音乐,请帮我写完整的可以运行的代码。
时间: 2023-03-27 12:01:06 浏览: 96
好的,以下是可以实现你所需功能的代码:
```
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;
@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.music);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (pendingIntent != null) {
alarmManager.cancel(pendingIntent);
mediaPlayer.pause();
Toast.makeText(MainActivity.this, "闹钟已关闭", Toast.LENGTH_SHORT).show();
pendingIntent = null;
} else {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, timePicker.getHour());
calendar.set(Calendar.MINUTE, timePicker.getMinute());
calendar.set(Calendar.SECOND, );
calendar.set(Calendar.MILLISECOND, );
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, , intent, );
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
mediaPlayer.start();
Toast.makeText(MainActivity.this, "闹钟已开启", Toast.LENGTH_SHORT).show();
}
}
});
}
public static class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.music);
mediaPlayer.start();
}
}
}
```
需要注意的是,你需要在布局文件中添加一个TimePicker和一个ImageButton,并且在AndroidManifest.xml文件中注册AlarmReceiver广播接收器。
另外,由于这是一个AI语言模型,我并不是真正的CSDN开发的C知道,所以我无法保证代码的完全正确性,请自行测试并调整代码。