android SoundPool調用pause stop方法使用注意問題

來源:互聯網
上載者:User

如題 ,相信android 使用  SoundPool 不會少吧

 android SoundPool的優勢就不說了

現在要說的是

初始化的時候使用:

@Override    protected void onStart() {        mPoolTurnSignal = new SoundPool(1, AudioManager.STREAM_SYSTEM, 100);          turnSignal = mPoolTurnSignal.load(this, R.raw.turn_signal, 0);}    protected void onResume() {                mPoolTurnSignal = new SoundPool(1, AudioManager.STREAM_SYSTEM, 100);          turnSignal = mPoolTurnSignal.load(this, R.raw.turn_signal, 0);}private void SetForSingalSound() {        if(mSingView.getProtocolLampSignal() != 0 )        {            if(PoolState == POOL_PRESTART)            {                mPoolTurnSignal.play(turnSignal, 1, 1, 0, -1, (float) 0.7);                PoolState = POOL_PLAYING;            }        }        else        {            if(PoolState == POOL_PLAYING)            {                mPoolTurnSignal.pause(turnSignal);                PoolState = POOL_PRESTART;            }                }    }

play之後

pause 和stop 除了第一次可以正常關閉之後
再開啟就無法關閉了
鬱悶了一整天
現在找到問題了

   

private void SetForSingalSound() {        if(mSingView.getProtocolLampSignal() != 0 )        {            if(PoolState == POOL_PRESTART)            {int tt = mPoolTurnSignal.play(turnSignal, 1, 1, 0, -1, (float) 0.7);Log.i("MicroCar:", "SetForSingalSound tt "+tt);                PoolState = POOL_PLAYING;            }        }        else        {            if(PoolState == POOL_PLAYING)            {                mPoolTurnSignal.pause(turnSignal);                PoolState = POOL_PRESTART;            }                }    }

注意紅色字型修改後
看到logcat 就明白了
原來 每次play開啟返回 的值都是變化的
通過logcat可以看到 每次開啟tt 的到不同的值1、2、3、4、5、6.。。。
然而之前我關閉或者暫停是

mPoolTurnSignal.pause(turnSignal);

turnSignal 是初始化第一次的值,而第二次開啟之後這數值是不一樣的  所以 是要傳遞響應的值進去關閉
比如

turnSignal = mPoolTurnSignal.play(turnSignal, 1, 1, 0, -1, (float) 0.7);Log.i("MicroCar:", "SetForSingalSound turnSignal:"+turnSignal);mPoolTurnSignal.pause(turnSignal);

應該可以了現在。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.