安卓通过Service播放音乐代码
时间: 2024-01-22 16:19:40 浏览: 22
以下是一个简单的安卓 Service 播放音乐的代码示例:
```java
public class MusicService extends Service implements MediaPlayer.OnPreparedListener {
private MediaPlayer mediaPlayer;
@Override
public void onCreate() {
super.onCreate();
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals(Constants.ACTION_PLAY)) {
String url = intent.getStringExtra("url");
try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
} else if (intent.getAction().equals(Constants.ACTION_STOP)) {
mediaPlayer.stop();
stopSelf();
}
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
mediaPlayer.release();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
}
}
```
在这个示例中,我们创建了一个名为 `MusicService` 的 Service,其中包含一个 MediaPlayer 对象,用于播放音乐。 `onCreate` 方法用于初始化 MediaPlayer,并设置 OnPreparedListener 监听器。 `onStartCommand` 方法用于接收来自 Activity 的命令(在这个示例中有两个命令:ACTION_PLAY 和 ACTION_STOP)。如果接收到 ACTION_PLAY 命令,则从 Intent 中获取音乐文件的 URL,并使用 setDataSource 和 prepareAsync 方法准备播放音乐。如果接收到 ACTION_STOP 命令,则停止播放音乐并停止 Service。 `onDestroy` 方法用于释放 MediaPlayer 资源。 `onBind` 方法返回 null,因为我们不需要与此 Service 进行交互。最后,当 MediaPlayer 准备好播放时,onPrepared 方法会被调用,然后开始播放音乐。