3

Androidアプリケーションで**resource フォルダーから mp**3 ファイルを再生しようとするとエラーが発生します

私は res フォルダーに raw フォルダーを作成しました。これは私がプレイしているサンプル コードです。

MediaPlayer mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.b);
mediaPlayer.start();

ログ:

09-02 10:44:07.854: INFO/AndroidRuntime(441): NOTE: attach of thread 'Binder Thread #3' failed
09-02 10:44:08.003: DEBUG/AudioSink(34): bufferCount (4) is too small and increased to 12
09-02 10:44:08.224: WARN/AudioFlinger(34): write blocked for 117 msecs, 44 delayed writes, thread 0xb3f0
09-02 10:44:08.283: INFO/ActivityManager(59): Displayed activity com.soundtest/.SoundTestActivity: 511 ms (total 511 ms)
09-02 10:44:13.052: ERROR/MP3Extractor(34): Unable to resync. Signalling end of stream.

私は何かが欠けていますか?

4

3 に答える 3

3

mp3 ファイルをアセットから SD にコピーすることにした後、エラーはなくなりました。データ ソースがアセットではなく SD ストレージの uri で設定されている場合、正常に動作しています。

于 2012-09-28T23:59:33.633 に答える
1

試すことができますか:

AssetFileDescriptor afd = ctx.getResources().openRawResourceFd(params[0]);

try
{   
    //final MediaPlayer mediaPlayer = new MediaPlayer();
    mediaPlayer.reset();
    mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
    mediaPlayer.prepare();
    mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
        public void onPrepared(MediaPlayer arg0) {
            mediaPlayer.seekTo(0);
            mediaPlayer.start();
        });
    }
});
afd.close();
于 2011-09-02T08:41:45.017 に答える
0

mp3 を ogg に変換すると、エラーは消えます。私は2つのファイルをテストしました。ogg は mp3 ほどスムーズに再生されませんが、ログにエラーは表示されません。


ねえ、次のような警告をテストした後: WARN/AudioFlinger(33): 書き込みが 76 ミリ秒ブロックされました, 7773 遅延書き込み, スレッド 0xb3f0

mp3 ファイルを再度テストしましたが、エラーは表示されません。

ファイル形式ではなく、エラーを引き起こすのは権限の喪失だと思います。

私の理解では、 prepare() は音楽ファイルのイメージを作成し、プレーヤーが何度も同期して再生できるようにします。しかし、パーミッションを設定しなかった場合、書き込みがブロックされ、読み取り (再再生) と書き込みが同期しなくなります。したがって、「再同期できません」です。

しかし、音楽が再生されるたびに何度も何度も書き込む理由がわかりません。私は誤解していますか?

en、ogg ファイルに関しては、エラーを回避できる理由もわかりません。

でも気にしないでください、私は正しい答えを得たと信じています。次の権限を追加します。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
于 2011-11-24T12:34:16.437 に答える