在Android系统中添加音乐主要通过以下方式实现,具体方法根据使用场景分为以下四类:
一、在应用内播放背景音乐
使用MediaPlayer播放资源文件 - 将音频文件放入`res/raw`目录,通过`MediaPlayer.create(this, R.raw.xiaoxiaole)`创建播放器并播放。
- 示例代码:
```java
private static MediaPlayer mp;
public static void play(Context context, int resource) {
stop(context);
mp = MediaPlayer.create(context, resource);
mp.setLooping(true);
mp.start();
}
```
- 需在`onPause`和`onResume`中释放资源,避免内存泄漏。
使用SoundPool播放短音效
- 适用于游戏或交互场景,通过`SoundPool`加载音频文件并播放。
- 示例代码:
```java
private static SoundPool pool;
private static int soundID;
public static void playSound(Context context, int resource) {
pool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
soundID = pool.load(context, resource, 0);
pool.play(soundID, 1, 1, 1, 0, 1);
}
```
二、设置开机启动音乐
使用Intent触发系统铃声选择器
- 通过`Intent.ACTION_RINGTONE_PICKER`启动系统铃声设置界面,用户可自定义开机音乐。
- 示例代码:
```java
Intent intent = new Intent(RingtonePicker.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtonePicker.EXTRA_TITLE, "My Startup Music");
startActivity(intent);
```
三、通过Service持续播放音乐
创建后台音乐服务
- 使用`Service`类在后台持续播放音乐,需在`AndroidManifest.xml`中注册服务。
- 示例代码:
```java
public class MusicServer extends Service {
private MediaPlayer mediaPlayer;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
mediaPlayer = MediaPlayer.create(this, R.raw.background_music);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
@Override
public void onDestroy() {
super.onDestroy();
mediaPlayer.stop();
mediaPlayer.release();
}
}
```
四、管理音频资源生命周期
释放资源: 在`onDestroy`方法中停止并释放`MediaPlayer`或`SoundPool`实例,避免内存泄漏。 注意事项
音频文件需放在`res/raw`目录,资源ID通过`R.raw.filename`引用。- 使用`Service`播放音乐时,需注意系统对后台服务的限制(如Android 8.0及以上版本)。