編輯:關於Android編程
Android音效SoundPool問題:soundpool 1 not retry
今天開發中要用到SoundPool,遇到soundpool 1 not retry無法播放聲音,MediaPlay可以
後來經過一番研究,發現:
出現soundpool 1 not retry問題的代碼,無法播放聲音
mgr = (AudioManager) MainActivity.this.getSystemService(Context.AUDIO_SERVICE);
//初始化soundPool 對象,第一個參數是允許有多少個聲音流同時播放,第2個參數是聲音類型,第三個參數是聲音的品質
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(1, soundPool.load(MainActivity.this, R.raw.or, 1));
soundPoolMap.put(2, soundPool.load(MainActivity.this, R.raw.sd, 1));
volume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
//loop:循環中的循環模式(0 =沒有循環,-1 =無限循環)
soundPool.play(soundPoolMap.get(1), volume, volume, 1, 0, 1f);
問題解決:這裡的問題是soundPool.load(MainActivity.this, R.raw.or, 1),即 load() 聲音文件後,立馬 play() 播放,系統還沒有准備好聲音文件,所以才出了問題
這裡需要你:先在其他地方load()好了,比如在構造函數裡先load()好了,在需要播放的地方再調用play(),也就是要過一段時間再調用play()
這樣寫就沒問題
mgr = (AudioManager) MainActivity.this.getSystemService(Context.AUDIO_SERVICE);
//初始化soundPool 對象,第一個參數是允許有多少個聲音流同時播放,第2個參數是聲音類型,第三個參數是聲音的品質
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(1, soundPool.load(MainActivity.this, R.raw.or, 1));
soundPoolMap.put(2, soundPool.load(MainActivity.this, R.raw.sd, 1));
volume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
soundPool.play(soundPoolMap.get(1), volume, volume, 1, 0, 1f);
Android中有各種各樣的菜單,Android的菜單欄(也叫操作欄):ActionBar。先來看下Menu大匯總。具體可看該網址:https://developer.a
自從Gallery被谷歌廢棄以後,Google推薦使用ViewPager和HorizontalScrollView來實現Gallery的效果。的確HorizontalSc
本篇文章的主要內容是說圖片的內存緩存和從網絡異步獲取圖片的過程工程效果圖如下: 代碼中部分不常見的屬性解釋如下(百度也可以找到的)android:numCo
本文實例講述了Android activity的生命周期。分享給大家供大家參考,具體如下:activity類處於android.app包中,繼承體系如下:1.Java.l
status_t Camera::connectLegacy(int c