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>
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>
相关文章推荐
- Xamarin Android 绑定jar库同时将so库打包进去
- Xamarin.Android开发实践(十三)
- Xamarin.Android开发实践(十二)
- Xamarin.Android开发实践(十一)
- Xamarin.Android开发实践(十)
- Xamarin.Android开发实践(九)
- Android BLE开发之Android手机与BLE终端通信
- Xamarin.Android开发实践(八)
- Xamarin.Android开发实践(七)
- Android笔记-2-TextView的属性详解
- Xamarin.Android开发实践(六)
- Xamarin.Android开发实践(五)
- Xamarin.Android开发实践(四)
- Android 自定义SwitchButton开关控件
- Xamarin.Android开发实践(三)
- Xamarin.Android开发实践(二)
- Xamarin.Android开发实践(一)
- Android中的多线程编程(一)附源码
- 在Android中可以使用Gson解析JSON数据
- Mac上Android studio环境搭建