使用android studio编写程序利用服务、MediaPlayer实现点击一个按钮实现播放、停止播放音乐
时间: 2023-11-28 18:04:11 浏览: 146
好的,以下是实现的步骤:
1. 首先在布局文件中添加一个按钮用于控制音乐的播放和停止。
2. 在 MainActivity 中定义一个 MediaPlayer 对象,用于播放音乐。
3. 创建一个 Service 类来控制音乐的播放和停止。
4. 在 Service 类中定义一个 MediaPlayer 对象,用于播放音乐。
5. 在 Service 类中实现 onStartCommand() 方法,用于控制音乐的播放和停止。
6. 在 MainActivity 中实现按钮的点击事件,通过 Intent 启动 Service。
7. 在 Service 类中实现 onDestroy() 方法,用于停止音乐的播放并释放资源。
下面是完整的代码实现:
MainActivity.java
```
public class MainActivity extends AppCompatActivity {
private Button mBtnPlay;
private Button mBtnStop;
private boolean mIsPlaying = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtnPlay = findViewById(R.id.btn_play);
mBtnStop = findViewById(R.id.btn_stop);
mBtnPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MusicService.class);
if (!mIsPlaying) {
startService(intent);
mIsPlaying = true;
mBtnPlay.setText("停止");
} else {
stopService(intent);
mIsPlaying = false;
mBtnPlay.setText("播放");
}
}
});
mBtnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MusicService.class);
stopService(intent);
mIsPlaying = false;
mBtnPlay.setText("播放");
}
});
}
}
```
MusicService.java
```
public class MusicService extends Service {
private MediaPlayer mMediaPlayer;
@Override
public void onCreate() {
super.onCreate();
mMediaPlayer = MediaPlayer.create(this, R.raw.music);
mMediaPlayer.setLooping(true);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (mMediaPlayer.isPlaying()) {
mMediaPlayer.pause();
} else {
mMediaPlayer.start();
}
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
```
布局文件 activity_main.xml
```
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="播放" />
<Button
android:id="@+id/btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btn_play"
android:layout_centerHorizontal="true"
android:text="停止" />
</RelativeLayout>
```
注意:需要将音乐文件放在 res/raw 目录下,并命名为 music.mp3(或者其他名称),在代码中使用 R.raw.music 引用。
阅读全文