着信音を鳴らす
Android上で音声ファイル等を再生する場合は、MediaPlayerを使うが、着信音やアラーム音の場合はRingtoneクラスを使用して再生することができる。
またRingtoneManagerクラスで取得したUriを使い、MediaPlayerで再生することもできる。
またRingtoneManagerクラスで取得したUriを使い、MediaPlayerで再生することもできる。
使用するクラス
RingtoneManager 着信音のリストを取得したり、Ringtoneオブジェクトを取得したりする
Ringtone 特定の着信音を再生するクラス
Ringtone 特定の着信音を再生するクラス
サンプルコード
- まずは着信音のリストを表示してみる。RingtoneManagerからCursorを取得し、Cursorからデータを読み出している。ここではログに書き出すだけ。
RingtoneManager ringtoneManager = new RingtoneManager(this);
ringtoneManager.setType(RingtoneManager.TYPE_ALL);
Cursor ringtoneCursor = ringtoneManager.getCursor();
String[] names = new String[ringtoneCursor.getCount()];
int columnId = ringtoneCursor.getColumnIndex("title");
ringtoneCursor.moveToFirst();
Log.v(TAG, "Cursor count:" + ringtoneCursor.getCount());
for(int i = 0 ; i < ringtoneCursor.getCount() ; i++) {
Log.v(TAG, "found item:" + ringtoneCursor.getString(columnId));
ringtoneCursor.moveToNext();
}
- Ringtoneオブジェクトを使用し再生する。なお、Cursorから "uri"指定でURIを取り出し、代わりに使用することで任意の音を再生できる。
Uri defaultRingtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALL);
Ringtone ringtone = RingtoneManager.getRingtone(this, defaultRingtoneUri);
if (ringtone != null) ringtone.play();
- MediaPlayerで再生、Ringtoneでは出来ない繰り返し再生を10秒間続ける
- 以前、ここに出していたソースは間違っていたので修正した。setLooping や setAudioStreamType は create 後には実行できない。create では暗黙的に prepare を実行するので、あとは再生するだけ。
MediaPlayerの使い方は別ページで詳しく載せる予定。
メンバフィールドとして宣言する。
MediaPlayer mMediaPlyer;
Uri defaultRingtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
mMediaPlyer= new MediaPlayer();
mMediaPlyer.setDataSource(this, defaultRingtoneUri);
mMediaPlyer.setLooping(true);
mMediaPlyer.setAudioStreamType(AudioManager.STREAM_ALARM);
mMediaPlyer.prepare();
mMediaPlyer.start();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
mMediaPlyer.stop();
}
}, 10000);
エミュレータで実行すると、音声ファイルが設定されておらず残念なことに再生されないため、手動で音声ファイルを設定してやる必要がある。
面倒な設定なら、実機で試してみるとよい。
面倒な設定なら、実機で試してみるとよい。


