使用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(); }