首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新soundpool?

如何更新soundpool?
EN

Stack Overflow用户
提问于 2015-12-07 20:09:29
回答 1查看 925关注 0票数 1

我是java和android的新手,我正试着在按下按钮后播放一些声音。我搜索了很多,并尝试了以下内容:

代码语言:javascript
复制
//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;
}
}

我的代码正常工作,但我得到了以下警告:

代码语言:javascript
复制
SoundPool(int, int, int)' is deprecated

所以我来here看看如何解决,得到了这样的结果:

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

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

EN

回答 1

Stack Overflow用户

发布于 2019-01-07 07:19:44

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

对于那些关心android版本的向后兼容性并希望两全其美的人,这里是我所做的一个可能的实现。

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

代码语言:javascript
复制
// 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中抛出一个警告,因为使用了不推荐使用的方法,但是如果你担心下面21个APK,这可能是你最好的选择。

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

代码语言:javascript
复制
soundId = sounds.load(context, R.raw.sound, 1);

public void playSound() {
    sounds.play(soundId, 1, 1, 1, 0, 1);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34133230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档