【问题标题】:Android SoundPool load() returning nullAndroid SoundPool load() 返回 null
【发布时间】:2013-09-09 02:24:49
【问题描述】:

我正在开发一个 Android 应用程序并尝试使用 SoundPool 在后台播放一些音乐(我知道 MediaPlayer 会更好,但我真的想弄清楚如何使用这个类,因为它让我感到沮丧) .我正在尝试使用静态音乐类加载两个 mp3 文件,并将它们的声音 ID 存储在 HashMap 中,以便在它们准备好使用时访问它们。但是,将它们放在 HashMap 中会给我一个 NullPointerException。

public static void play(Context context, int resource) {
    if (sp == null) {
        sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
        sp.setOnLoadCompleteListener(new OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                loaded = true;
            }
        });
        sounds.put(R.raw.main, sp.load(context, R.raw.main, 1));
        sounds.put(R.raw.game, sp.load(context, R.raw.game, 1));
        am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        float volume = am.getStreamVolume(AudioManager.STREAM_MUSIC) / am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        sp.play(sounds.get(resource), volume, volume, 0, -1, 1.0f);
    } else {
        float volume = am.getStreamVolume(AudioManager.STREAM_MUSIC) / am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        sp.play(sounds.get(resource), volume, volume, 0, -1, 1.0f);
    }
}

具体来说,我在sounds.put(R.raw.main, sp.load(context, R.raw.main, 1)); 线上收到了 NullPointerException

我尝试在加载声音文件后立即使用 while 循环,该循环只是循环直到“加载”为真,但这只会导致应用程序永远挂起。此外,两个 mp3 文件都是 400 KB 或更小,所以我认为它们的大小不是问题。任何帮助将不胜感激。

【问题讨论】:

  • 你记得构造你的HashMap(或任何sounds)吗?

标签: java android audio multimedia


【解决方案1】:

试试这个

sounds.load(collection.getContext(), R.raw.main, 1);

或者这个方法

int sound_id = mContext.getResources().getIdentifier("myownsound", "raw",
                                                     mContext.getPackageName());
soundPool.load(mContext, sound_id, 1);

或者看看这个链接

Soundpool

【讨论】:

  • 我看不到第一个建议是如何工作的,因为我没有任何名为 collection 的变量。我尝试了第二个建议并得到了与以前相同的结果。不过感谢您的回复。
猜你喜欢
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 2012-05-28
  • 2014-12-05
  • 2021-07-07
  • 2013-06-27
相关资源
最近更新 更多