以绑定式方式启动service实现后台音乐播放的功能,界面简单,给出代码
时间: 2023-06-13 17:02:34 浏览: 54
好的,下面是一个简单的Android后台音乐播放器示例代码:
1. 创建一个后台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 != null && intent.getAction() != null) {
switch (intent.getAction()) {
case "play":
String url = intent.getStringExtra("url");
playMusic(url);
break;
case "pause":
pauseMusic();
break;
case "resume":
resumeMusic();
break;
case "stop":
stopMusic();
break;
}
}
return super.onStartCommand(intent, flags, startId);
}
private void playMusic(String url) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
}
private void pauseMusic() {
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
}
private void resumeMusic() {
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
}
private void stopMusic() {
mediaPlayer.stop();
mediaPlayer.reset();
}
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
```
2. 在AndroidManifest.xml中声明Service
```xml
<service android:name=".MusicService"/>
```
3. 在Activity中启动Service并发送命令
```java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText etUrl;
private Button btnPlay;
private Button btnPause;
private Button btnResume;
private Button btnStop;
private Intent musicServiceIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etUrl = findViewById(R.id.et_url);
btnPlay = findViewById(R.id.btn_play);
btnPause = findViewById(R.id.btn_pause);
btnResume = findViewById(R.id.btn_resume);
btnStop = findViewById(R.id.btn_stop);
btnPlay.setOnClickListener(this);
btnPause.setOnClickListener(this);
btnResume.setOnClickListener(this);
btnStop.setOnClickListener(this);
musicServiceIntent = new Intent(this, MusicService.class);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_play:
String url = etUrl.getText().toString();
musicServiceIntent.setAction("play");
musicServiceIntent.putExtra("url", url);
startService(musicServiceIntent);
break;
case R.id.btn_pause:
musicServiceIntent.setAction("pause");
startService(musicServiceIntent);
break;
case R.id.btn_resume:
musicServiceIntent.setAction("resume");
startService(musicServiceIntent);
break;
case R.id.btn_stop:
musicServiceIntent.setAction("stop");
startService(musicServiceIntent);
break;
}
}
}
```
这样就可以实现一个简单的后台音乐播放器了。注意,此示例代码并没有考虑到后台播放时的系统通知等功能,如需要可以自行添加。同时,由于示例代码没有使用前台服务,为了避免被系统杀死,需要在Service中定期调用startForeground方法。