您的位置:首页 > 移动开发 > Android开发

android SoundPool调用pause stop方法使用注意问题

2015-07-25 09:54 603 查看
如题 ,相信android 使用  SoundPool 不会少吧

 android SoundPool的优势就不说了

现在要说的是

初始化的时候使用:

[java]
view plaincopy

@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 除了第一次可以正常关闭之后

再打开就无法关闭了

郁闷了一整天

现在找到问题了

   

[java]
view plaincopy

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 是初始化第一次的值,而第二次打开之后这数值是不一样的  所以 是要传递响应的值进去关闭

比如

[java]
view plaincopy

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

应该可以了现在。

[java]
view plaincopy

<pre name="code" class="java"><pre name="code" class="java"></pre>  
<pre></pre>  
<pre></pre>  
<pre></pre>  
<pre></pre>  
      
        <div style="padding-top:20px">           
            <p style="font-size:12px;">版权声明:本文为博主原创文章,未经博主允许不得转载。</p>  
        </div>  
</pre> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: