编程语言
首页 > 编程语言> > java – 可以在oncreate()中播放soundPool吗?

java – 可以在oncreate()中播放soundPool吗?

作者:互联网

我正在开发一个应用程序,其中当一个新活动开始时,它应该开始播放声音.
所以我用mediaplayer在oncreate中播放声音并且工作正常.但是,当我尝试使用soundpool时,通过在活动的oncreate中加载和播放它.
它不玩.
我选择soundpool,因为它比mediaplayer更好.

可能是什么问题?是不是在oncreate中使用soundpool工作?

解决方法:

你可以在任何地方玩,

我用一个简单的例子来证明

创建一个方法initializeSoundPool

private void initializeSoundPool(){
        mSoundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
        mSoundPool.setOnLoadCompleteListener(new onl oadCompleteListener() {
                public void onl oadComplete(SoundPool soundPool, int sampleId,
                        int status) {
                    loaded = true;
                }
            });
            soundID = mSoundPool.load(this, R.raw.glassbreak, 1);        
        }

然后创建一个方法playFile

private void playFile(){
 AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
         float actualVolume = (float) audioManager
                 .getStreamVolume(AudioManager.STREAM_MUSIC);
         float maxVolume = (float) audioManager
                 .getStreamMaxVolume(AudioManager.STREAM_MUSIC);
         float volume = actualVolume / maxVolume;
         if (loaded) {
             mSoundPool.play(soundID, volume, volume, 1, 0, 1f);
             Log.e("Test", "Played sound");
         }
}

然后在onCreate中调用它们就像这样

    private  SoundPool mSoundPool; 
    private int soundID;
    boolean loaded = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.spxml);
        initializeSoundPool();
            playFile();
    }

或者甚至更好地调用onCreate中的initializeSoundPool,然后在onResume中调用playFile.

标签:soundpool,android,java,android-activity
来源: https://codeday.me/bug/20190902/1787730.html