使用MediaPlayer播放自定义提示音

2017/3/11 14:41:41

使用MediaPlayer播放自定义提示音

这里要实现的是一个音频预览界面,需要实现的是点击一个音频就可以进行播放,点击另一个瞬间切换;

1.获取音频文件

这里将需要使用的音频文件放置在app/src/main/assets/tones/中,然后再代码中进行获取:

AssetManager assets = getAssets();
try {
    String[] tmpFiles = assets.list("tones");
} catch (IOException e) {
    e.printStackTrace();
}

然后使用list的形式进行显示,重点是条目的点击播放。

2.点击播放音频

使用MediaPlayer播放音频

try {
    player = new MediaPlayer();
    assets = getAssets();
    String path = "tones/" + fileNames[pos];
    AssetFileDescriptor fileDescriptor = assets.openFd(path);
    
    player.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(),
            fileDescriptor.getLength());

    player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            player.start();
        }
    });
    player.prepare();
    //播放一次
    player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            player.stop();
        }
    });
} catch (IOException e) {
    e.printStackTrace();
    if (player != null) {
        player.release();
        player = null;
    }
}

当然,在切换的时候,需要停止当前播放,开启下一段播放,那么在播放之前对上一段播放进行停止操作:

if (player != null) {
    player.stop();
    player.release();
    player = null;
}

3.播放系统默认提示音

播放系统提示音,使用到的是RingToneManager:

Uri notification= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
r = RingtoneManager.getRingtone(MyApplication.getInstance(),notification);
if (r != null) {
    r.stop();
    r.play();
}

猜你喜欢

转载自blog.csdn.net/weixin_34067049/article/details/87540125