6

すべてのサウンドを res フォルダーに保存します。それらをアセットフォルダーに保存して、そこから再生する方法があるかどうか疑問に思っていますか?

これは私が今使っているコードです:

void StartSound(int id) {
    if (id==0)
        return;

    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;
    float volume=(float) ( .01*(double)cGlobals.iVol);

    // Is the sound loaded already?
    if (nLastSound!=0)
        soundPool.stop(nLastSound); 

    int t=soundPool.play(id, volume, volume, 1, 0, 1f);
    nLastSound=t;
}

APK を読み込もうとしたときのメモリ エラーを回避するために、これを変更したいと考えています。res フォルダーからいくつかのファイルを削除すると、正常に動作します。それらがファイルとして保存されている場合、同じ問題が発生したいと思っています。

4

4 に答える 4

13

別の方法でもできます。.mp3 ファイルを res/Raw フォルダーに置き、次のコードを使用します。

MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.android);
mediaPlayer.start();
于 2013-05-28T17:20:56.243 に答える
8
private void startSound(String filename){
    AssetFileDescriptor afd = getAssets().openFd(filename);
    MediaPlayer player = new MediaPlayer();
    player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
    player.prepare();
    player.start();
}
于 2013-05-28T15:55:28.813 に答える