0

私は警報システムをやっています。アラームは正常に動作していますが、音は動作しません..少しテストを行っていますが、どこに問題があるのか​​ わかりません..アラームアクティビティでは、次のコードを使用しています。

        setVolumeControlStream(AudioManager.STREAM_MUSIC);
    soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0);
    try {
        AssetManager assetManager = getAssets();
        AssetFileDescriptor descriptor = assetManager.openFd("sound.ogg");
        mySoundId = soundPool.load(descriptor, 1);
    } catch (IOException e) {
        Log.d(TAG,"We've problem's!!, "
                + e.getMessage());
    }   

    soundPool.play(mySoundId, 1, 1, 0, 0, 1);

エラーはありません..しかし、音楽が動作しません..代わりに、下の作業で PLAY をプログラムすると !! 誰でも私を助けてもらえますか??

4

1 に答える 1

1

私はあなたのコードを試したところ、問題が見つかりました。これはSoundPoolの一般的な問題です。サウンドを再生する前に、サウンドのロードが完了するのを待つ必要があります。そのため、soundPool.play()ゼロが返されました。音の準備ができていませんでした。

API 8ではsetOnLoadCompleteListener()、問題を解決するための導入が行われました。

soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
    public void onLoadComplete(SoundPool soundPool, int sampleId,int status) {
       //play the sound.
    }
});

ただし、より低いAPIをターゲットにしている場合は、サウンドを再生する準備ができているかどうかを確実に判断することはできません。この場合、MediaPlayerを使用することをお勧めします。

于 2012-09-03T06:45:28.903 に答える