如题 ,相信android 使用 SoundPool 不会少吧
android SoundPool的优势就不说了
现在要说的是
初始化的时候使用:
play之后
pause 和stop 除了第一次可以正常关闭之后
再打开就无法关闭了
郁闷了一整天
现在找到问题了
注意红色字体修改后
看到logcat 就明白了
原来 每次play打开返回 的值都是变化的
通过logcat可以看到 每次打开tt 的到不同的值1、2、3、4、5、6.。。。
然而之前我关闭或者暂停的是
mPoolTurnSignal.pause(turnSignal);
turnSignal 是初始化第一次的值,而第二次打开之后这数值是不一样的 所以 是要传递响应的值进去关闭
比如
应该可以了现在。
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);
应该可以了现在。