サウンドピッカーを呼び出して着信音等を取得する
着信音や通知音を取得できるサウンドピッカーを呼び出す方法と、その結果の受け取り方
黙示的インテントから、サウンドピッカーを呼び出します。
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT,false); startActivityForResult(intent,REQUEST_CODE_RINGTONE_PICKER);
(REQUEST_CODE_RINGTONE_PICKERは、任意の定数です。)
これを実行すると、サウンドピッカーが現れます。
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT,false);
このコードは、”サイレント”をリストに表示するかどうかをboolean型で指定します。
falseにすれば、リスト上に表示されません。
”サイレント”(端末によっては”設定しない”などと表示される)が選択された場合、
アクティビティリザルトのdataがnullになるので、エラー回避の記述を加える必要があります。
ユーザビリティや、開発しているアプリの用途に合わせて振舞いを選んでください。
サウンドピッカーからの結果を受け取る。
@Override protected void onActivityResult(int requestCode,int resultCode,intent data){ if (requestCode == REQUEST_CODE_RINGTONE_PICKER){ if (resultCode == RESULT_OK){ Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); Ringtone ringtone = RingtoneManager.getRingtone(this,uri); } } }
onActivityResultをオーバーライドして、返り値から、目的のオブジェクトを取得していきます。
例では、着信音です。
dataからユーザーによって選択された着信音のUriを取り出し、
それを引数にRingtoneのインスタンスを取得しています。
これで、すぐにでも音を鳴らすことができます。
独自の操作性を追求するのでなければ、
データベースやカーソルを駆使するよりも、
サウンドピッカーを利用した方がはるかに簡単だと思います。
また、サウンドピッカーから、SDカード内のデータを取得できるようにする場合は、
マニフェストに、SDカードにアクセスする権限を加える必要があるのでご注意ください。