android音乐应用程序,Android实现音乐的播放与停止(Service的初级应用)
时间: 2024-02-06 08:09:24 浏览: 55
实现一个简单的音乐应用程序,可以实现音乐的播放、暂停、停止和上一曲/下一曲功能,可以使用 Service 来实现音乐的后台播放。
首先,需要在 AndroidManifest.xml 文件中声明服务:
```xml
<service android:name=".MusicService"/>
```
接着,创建一个 MusicService 类,继承自 Service 类。在 MusicService 类中,需要定义 MediaPlayer 对象和一些控制音乐播放的方法。
```java
public class MusicService extends Service implements MediaPlayer.OnCompletionListener {
private MediaPlayer mediaPlayer;
private int currentSongIndex = 0;
private ArrayList<Integer> songList;
@Override
public void onCreate() {
super.onCreate();
// 初始化 MediaPlayer 对象
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnCompletionListener(this);
// 初始化歌曲列表
songList = new ArrayList<>();
songList.add(R.raw.song1);
songList.add(R.raw.song2);
songList.add(R.raw.song3);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction() != null) {
switch (intent.getAction()) {
case "play":
playSong(currentSongIndex);
break;
case "pause":
pauseSong();
break;
case "stop":
stopSong();
break;
case "prev":
playPrevSong();
break;
case "next":
playNextSong();
break;
}
}
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
mediaPlayer.release();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
playNextSong();
}
private void playSong(int songIndex) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(getApplicationContext(), Uri.parse("android.resource://" + getPackageName() + "/" + songList.get(songIndex)));
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
private void pauseSong() {
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
}
private void stopSong() {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
}
private void playPrevSong() {
if (currentSongIndex > 0) {
currentSongIndex--;
} else {
currentSongIndex = songList.size() - 1;
}
playSong(currentSongIndex);
}
private void playNextSong() {
if (currentSongIndex < songList.size() - 1) {
currentSongIndex++;
} else {
currentSongIndex = 0;
}
playSong(currentSongIndex);
}
}
```
在 MusicService 类中,通过初始化 MediaPlayer 对象并实现 OnCompletionListener 接口,来控制音乐的播放、暂停、停止以及上一曲/下一曲功能。另外,还需要在 onStartCommand 方法中根据传入的 action 来调用相应的方法。
最后,在 Activity 类中,可以通过 Intent 来启动 MusicService,并传入相应的 action。
```java
public class MainActivity extends AppCompatActivity {
private Intent musicServiceIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
musicServiceIntent = new Intent(this, MusicService.class);
}
public void playSong(View view) {
musicServiceIntent.setAction("play");
startService(musicServiceIntent);
}
public void pauseSong(View view) {
musicServiceIntent.setAction("pause");
startService(musicServiceIntent);
}
public void stopSong(View view) {
musicServiceIntent.setAction("stop");
startService(musicServiceIntent);
}
public void playPrevSong(View view) {
musicServiceIntent.setAction("prev");
startService(musicServiceIntent);
}
public void playNextSong(View view) {
musicServiceIntent.setAction("next");
startService(musicServiceIntent);
}
}
```
在 Activity 类中,通过调用 startService 方法来启动 MusicService,并传入相应的 action,从而控制音乐的播放、暂停、停止以及上一曲/下一曲功能。
需要注意的是,在 Activity 类中需要使用 stopService 方法来停止 MusicService,否则服务会一直在后台运行。
```java
@Override
protected void onDestroy() {
super.onDestroy();
stopService(musicServiceIntent);
}
```
阅读全文