私はアプリを作っています。アクティビティが開かれたときにサウンドを鳴らしたいのですが、サウンドファイルはR.raw.sound_file
.
4 に答える
android.media.MediaPlayer
クラスはこれをしませんか?
参照: http://developer.android.com/reference/android/media/MediaPlayer.html
例: http://developer.android.com/guide/topics/media/index.html
例のステップ 2 は次のように述べています。
MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
mp.start();
あなたの場合、onStart()
Activity クラス内で使用します。
public class MyActivity extends Activity {
...
protected void onStart() {
super.onStart();
MediaPlayer mp = MediaPlayer.create(this, R.raw.sound_file_1);
mp.start();
}
...
}
私が作成した Android アプリに MediaPlayer オブジェクトを使用した経験があり、次のことを発見しました。
Wav ファイルは、ビットレートが 32kbps の場合、MediaPlayer で問題が発生しますが、より高いビット レートの wav ファイルは問題なく再生されるようです。大きな wav ファイルであっても、ビットレートが高ければ問題なく再生されます。
可能であれば、オーディオに mp3 ファイルを使用してください。MediaPlayer オブジェクトを使用した mp3 オーディオ ファイルではまったく問題が発生しなかったため、これが最善の方法です。Google を使用すると、リングなしで利用できるさまざまな種類の mp3 サウンドがたくさんあります。犬の鳴き声、猫の鳴き声、または探しているあらゆる種類の音まで。
私も同じ問題を抱えていました。これは、次のようにアプリケーションコンテキストを使用することでうまくいきました:
public class MyActivity extends Activity {
...
protected void onStart() {
super.onStart();
Context appContext = getApplicationContext();
MediaPlayer mp = MediaPlayer.create(appContext , R.raw.sound_file_1);
mp.start();
}
...
}
また、完了したら mp.release() を呼び出すことを忘れないでください
別の推奨オプションは、SoundPool クラスを使用することです。
私のコードを試してみてください。完全に機能します。また、サウンド ファイル .wav en res/raw が必要です。
public class PianoActivity extends Activity {
private MediaPlayer mediaPlayer = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_piano);
setupUI();
}
@Override
protected void onPause() {
super.onPause();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
private void setupUI() {
findViewById(R.id.doo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
managerOfSound();
}
});
}
private void managerOfSound() {
mediaPlayer = MediaPlayer.create(this, R.raw.doo);
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
} else {
mediaPlayer.stop();
}
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
mp.release();
}
});
}
}