6

あなたの助けが必要です。Assetsフォルダに保存されているオーディオファイルを再生しようとしましたが、エラーが発生しました。

これが私のコードです:

try{
  if (player.isPlaying()) {
    player.stop();
    player.release();
  }
}catch(Exception e){
  Toast.makeText(this, "an exception occurred", Toast.LENGTH_LONG).show();
  e.printStackTrace();
}
try{
  AssetFileDescriptor afd = BeeDailyConvo.this.getAssets().openFd("sounds/hello_kr.wma");
  player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
  player.prepare();
  player.start();
}catch(Exception e){
  e.printStackTrace();
}

そして、これが私のログキャットです:

06-16 22:39:53.330:W / MediaPlayer(13490):情報/警告(1、26)06-16
22:39:53.330:E / MediaPlayer(13490):エラー(1、-4)

私のコードの何が問題になっているのか説明していただけますか?

前もって感謝します

よろしく、

プリスカ

4

5 に答える 5

4

この問題は解決されました。

プレーヤーを準備する前に、アセットファイル記述子を閉じる必要があります。これが私が問題を解決した方法です:

player = new MediaPlayer();
AssetFileDescriptor afd = BeeDailyConvo.this.getAssets()
  .openFd("sounds/"+file);
player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
afd.close();**//just added this line**
player.prepare();
player.start();
于 2012-06-17T06:08:55.760 に答える
3

ここでは、すべてのエラーコードを確認できますメディアプレーヤーのエラーコード

-4エラーコードは、無効な引数を指定したことを示します。

コードをtrycatchブロックに入れます。

使ってみてください

    try {
          AssetFileDescriptor afd = CustomListViewActivity.this.getAssets()
                    .openFd("sounds/hello_kr.wma");
            player.setDataSource(afd.getFileDescriptor());
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
于 2012-06-16T16:17:56.983 に答える
1

残念ながら、何らかの理由で利用可能なMediaPlayerエラーコードに関する情報はほとんどありません。ただし、サウンドファイルをアセットではなくres /raw/内に配置してみることをお勧めします。

編集:

ここから、開発者向けドキュメントの「 MediaPlayerの使用」セクションから始めます。サウンドを正しく設定して再生する方法を説明します。

編集2:

アセットからそれを行うことができることが判明この質問を参照してください:アセットディレクトリからオーディオファイルを再生する

于 2012-06-16T16:04:20.203 に答える
1

wmaファイルはサポートされていないと思います。

http://developer.android.com/guide/appendix/media-formats.html

audioStreamTypeを指定していないことに気づきました

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MISIC);

于 2012-06-16T16:53:09.907 に答える
0

この方法を使用すると、問題が解決します:)

    public void playBeep() {
    try {

        if (m.isPlaying()) {
            m.stop();
            m.release();
            m = new MediaPlayer();
        }
        AssetFileDescriptor descriptor = getAssets().openFd("mp3 name.mp3");
        m.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
        descriptor.close();

        m.prepare();
        m.setVolume(1f, 1f);
        m.setLooping(true);
        m.start();
    } catch (Exception e) {
    }
}
于 2012-11-20T07:27:08.373 に答える