Java 如何更新声音池?

Java 如何更新声音池?,java,android,soundpool,Java,Android,Soundpool,我对java和android非常陌生,我试着在按下按钮后播放一些声音。我搜索了很多,并尝试了以下方法: //package and imports public class Simulador extends Activity { int contador; Button somar; SoundPool som; boolean loaded; int comeu, comprou; protected void onCreate(Bundle primeiroBundle) {

我对java和android非常陌生,我试着在按下按钮后播放一些声音。我搜索了很多,并尝试了以下方法:

//package and imports

public class Simulador extends Activity {
int contador;
Button somar;

SoundPool som;
boolean loaded;
int comeu, comprou;

protected void onCreate(Bundle primeiroBundle) {
    super.onCreate(primeiroBundle);
    setContentView(R.layout.activity_primeira_atividade);
    contador = 0;
    somar = (Button) findViewById(R.id.som);
    som = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);

    //I removed the whole part from the other button,
    //since it's basically the same. So that's why I need to set maxStreams to 2.

    comeu = som.load(this, R.raw.comeu, 1);
    som.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
        public void onLoadComplete(SoundPool som, int sampleId, int status){
            loaded = true;
        }
    });

    somar.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if (loaded) {
                som.play(comprou, 1, 1, 1, 0, 1f);
            }
            contador += 5;
            }
        }
    });
}

protected void onPause() {
    super.onPause();
    som.release();
    som = null;
}
}
我的代码正常工作,但我收到了以下警告:

SoundPool(int, int, int)' is deprecated
所以我来看看如何解决这个问题:

此构造函数在API级别21中被弃用。改用SoundPool.Builder来创建和配置SoundPool实例


所以我去了,但无法将我的代码添加到这个新构造函数中,甚至无法阅读引用。有人知道如何解决这个问题吗?

我知道这个问题已经有好几年了,你可能已经解决了这个问题,但希望这个答案能帮助其他人

对于那些关心android版本向后兼容性并希望两者兼得的人,这里有一个我已经完成的可能实现

在实例化SoundPool对象的
onCreate()
函数中,编写android版本的逻辑检查并使用相应的构造函数

// For ADK versions 21 (Lollipop) or greater
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
    sounds = new SoundPool.Builder().build();
// Else use older syntax (deprecated with ADK 21)
} else {
    sounds = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
}
注意:从技术上讲,这仍然会在IDE中对使用不推荐的方法发出警告,但是如果您担心下面的APKs 21,这可能是您的最佳选择

实例化后,只需加载声音文件并播放声音(在按钮上的
onClick()
侦听器中调用以下
playSound()
方法):


我知道这个问题已经问了好几年了,你们可能已经解决了这个问题,但希望这个答案能帮助其他人

对于那些关心android版本向后兼容性并希望两者兼得的人,这里有一个我已经完成的可能实现

在实例化SoundPool对象的
onCreate()
函数中,编写android版本的逻辑检查并使用相应的构造函数

// For ADK versions 21 (Lollipop) or greater
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
    sounds = new SoundPool.Builder().build();
// Else use older syntax (deprecated with ADK 21)
} else {
    sounds = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
}
注意:从技术上讲,这仍然会在IDE中对使用不推荐的方法发出警告,但是如果您担心下面的APKs 21,这可能是您的最佳选择

实例化后,只需加载声音文件并播放声音(在按钮上的
onClick()
侦听器中调用以下
playSound()
方法):

你试过这个吗?这可能有助于你的另一个链接你尝试过这个吗?这可能有助于你的另一个链接