Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在播放另一种声音之前,Android SoundPool第二次播放的声音不同大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的活动:
public class MainActivity extends AppCompatActivity {

    private SoundPool soundPool;

    @Override
    protected void onCreate(Bundle savedInstanceStatE) {

        super.onCreate(savedInstanceStatE);
        setContentView(R.layout.activity_main);

        setVolumeControlStream(Au@L_340_0@manager.STREAM_MUSIC);

        soundPool = new SoundPool(5,Au@L_340_0@manager.STREAM_MUSIC,0);
        final int sound1 = soundPool.load(this,R.raw.whack,1);
        final int sound2 = soundPool.load(this,R.raw.miss,1);

        Button b1 = (Button) findViewById(R.id.b1);
        Button b2 = (Button) findViewById(R.id.b2);

        b1.setOnClickListener(new View.onClickListener() {
            @Override
            public void onClick(View view) {
                playSound(sound1);
            }
        });
        b2.setOnClickListener(new View.onClickListener() {
            @Override
            public void onClick(View view) {
                playSound(sound2);
            }
        });
    }

    private void playSound(int soundId) {

        Au@L_340_0@manager au@L_340_0@manager = (Au@L_340_0@manager) getSystemservice(Context.AUdio_serviCE);
        float volume = au@L_340_0@manager.getStreamVolume(Au@L_340_0@manager.STREAM_MUSIC);
        soundPool.play(soundId,volume,1,1);
    }
}

问题是当我点击Button1时,播放了sound1.然后当我一次又一次地点击Button1时,在我点击Button2之前什么也没有播放.当我这样做时,播放声音2.然后,如果我点击Button1,则播放sound1.当我一遍又一遍地点击Button2时会发生同样的情况.那么这里的问题是什么?

解决方法

根据 SoundPool.play()文档,卷值必须从0.0到1.0.但au@L_340_0@manager.getStreamVolume(Au@L_340_0@manager.STREAM_MUSIC)返回更大的值(例如12).
因此,您应该设置正确的音量值.下面的工作代码
public static void playAudio(Context context,SoundPool player,int soundId,float speed){
        Au@L_340_0@manager mgr = (Au@L_340_0@manager) context.getSystemservice(Context.AUdio_serviCE);
        float actualVolume=(float) mgr.getStreamVolume(Au@L_340_0@manager.STREAM_MUSIC);
        float maxVolume=(float) mgr.getStreAMMaxVolume(Au@L_340_0@manager.STREAM_MUSIC);
        float volume= actualVolume/maxVolume;
        player.play(soundId,speed);
    }

大佬总结

以上是大佬教程为你收集整理的在播放另一种声音之前,Android SoundPool第二次播放的声音不同全部内容,希望文章能够帮你解决在播放另一种声音之前,Android SoundPool第二次播放的声音不同所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。