1

押すとオーディオファイルを再生する一連のボタンを持つアクティビティがあります。MediaPlayer を使用してこれを実装しようとしていますが、うまく動作しません。これが私が試してきたコードです:

     final MediaPlayer mp = new MediaPlayer();
    Button ger1play = (Button) findViewById(R.id.ger1play);ger1play.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          mp.setDataSource(this, R.raw.greet_1);
          mp.prepare();
          mp.start();

      }
  });

setDateSource メソッドが機能していないようです。どこが間違っているのか教えてもらえますか? どのボタンが押されたかに基づいて、mediaPlayer を関連するオーディオ ファイルに設定したいのですが、これは可能ですか?

更新しました

        final MediaPlayer mp = new MediaPlayer();
    Button ger1play = (Button) findViewById(R.id.ger1play);ger1play.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    try {
                        Uri myUri = Uri.parse(R.raw.greet_1);

                       mp.setDataSource(GreetingsLesson.this, R.raw.greet_1);

                       mp.prepare();

                       mp.start();

                    } catch (IllegalArgumentException e) {

                       e.printStackTrace();

                    } catch (IllegalStateException e) {

                       e.printStackTrace();

                    } catch (IOException e) {

                       e.printStackTrace();

                    }
       }
    });
4

4 に答える 4

1

これを試して:

     final MediaPlayer mp = new MediaPlayer();
    Button ger1play = (Button) findViewById(R.id.ger1play);ger1play.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
  try {

                     mp.setDataSource(CurrentActivity.this, R.raw.greet_1);

                     mp.prepare();

                     mp.start();

                  } catch (IllegalArgumentException e) {

                     e.printStackTrace();

                  } catch (IllegalStateException e) {

                     e.printStackTrace();

                  } catch (IOException e) {

                     e.printStackTrace();

                  }
     }
  });
于 2012-04-26T13:12:15.973 に答える
0

使ってみませんか

mp = MediaPlayer.create(this, R.raw.greet_1);

そうすれば、準備や開始は必要ありません。

于 2012-04-26T14:40:18.270 に答える
0

これをエミュレーターで実行していますか?その場合は、AVDマネージャーがハードウェアの下にあることを確認してください。プロパティ「オーディオ再生サポート|はい」が追加されました

于 2012-07-19T13:22:53.520 に答える
0

アプリケーションの生のリソースまたはアプリケーションのアセット ファイルからのファイルの 1 つを使用してメディア プレーヤー オブジェクトを送信する場合は、次のように実行できます。

try {
AssetFileDescriptor fd = getResources().openRawResouceFd(R.raw.greet_1);
mp.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength());
mp.start();
fd.close();
} catch (IllegalArgumentException e) {
// handle exception
} catch (IllegalStateException e) {
// handle exception
} catch (IOException e) {
// handle exception
}
于 2012-04-26T13:59:59.803 に答える