サウンドの取得/選択(標準サウンドのURIを得る)
以前の章で解説しましたが、音の再生には リングトーンマネージャ による方法と、メディアプレイヤー による方法があります。
いずれも音源を URI 形式で指定する必要がありますが、もし再生したい音源が Android標準音源で、かつ、現在端末に設定されているサウンドで良い場合(たとえばデフォルトのアラーム音で鳴らしたい場合)、ソースコードに URI を直接記入するのではなく、現在のデフォルトサウンドを取得する処理単語を呼び出すことでその URI を得ることができます。
文法
(簡単な使い方)
↓整数
<サウンド種類>で デフォルトサウンドを取得 → 音源URI、音源タイトル
↑
└─サウンド種類は以下のシンボルのいずれかを指定してください
呼び出し音のサウンド (=整数値 1)
通知のサウンド (=整数値 2)
アラームのサウンド (=整数値 4)
(格納先文字列実体を明示する場合)
<サウンド種類>で <格納文字列実体>をつかい デフォルトサウンドを取得 → 音源URI、音源タイトル
記述例
(簡易的な表記)
○○とは
_音源URIは 文字列
_音源タイトルは 文字列
〜略〜
呼び出し音のサウンドで デフォルトサウンドを取得し
_音源URIと _音源タイトルに 入れ
(読み出し先バッファを明示する場合)
URIとタイトルのバッファは 文字列実体 長さ 256桁。
○○とは
_音源URIは 文字列
_音源タイトルは 文字列
〜略〜
呼び出し音のサウンドで URIとタイトルのバッファをつかい デフォルトサウンドを取得し
_音源URIと _音源タイトルに 入れ
得られる音源URIはたとえば以下のような文字列です。
content://settings/system/alarm_alert
URIだけでなく音源のタイトル(分かりやすい名称)も一緒に得られます。音源タイトルはたとえば以下のような文字列です。
端末の基本着信音(アラーム音1 (飛び起き))
取得した音源の再生に必要なのは前者の 音源URI だけです。音源タイトルはアプリ利用者に見せる必要がある場合に使います。
再生したい音源が Android標準音源(たとえば呼び出し音やアラーム)のうちの一つである場合、ソースコードに URI を直接記入するのではなく、ダイアログを開いてアプリの利用者に音源の一つを選択させる方法が使えます。この仕組みを「サウンドピッカー」と呼び、音を出す多くのアプリで簡単に音の選択ができます。
サウンドピッカーは内部的にはAndroid標準装備のアクティビティを起動することによって実現されるのですが、使い勝手としてはダイアログに近いのであえて「ダイアログ」と呼ぶことにします。
文法
サウンドピッカーの終了通知とは 本定義 (ボタン番号、音源URI、音源タイトル → 戻値)
〜
〜。
文字列 真偽 整数
<ピッカータイトル>と <デフォルトも表示>と <サウンド種類>で サウンドピッカーを起動 → ・
サウンド種類は以下のシンボルのいずれかを指定してください
呼び出し音のサウンド (=整数値 1)
通知のサウンド (=整数値 2)
アラームのサウンド (=整数値 4)
上記を解説します。
サウンドピッカーを起動
記述例
↓タイトル ↓サウンド種類
「呼び出し音」と 真と 呼び出し音のサウンドで サウンドピッカーを起動する
↑デフォルトも表示
<ピッカータイトル>はサウンドピッカーが起動したときのダイアログタイトルを文字列で指定するものです。
実行する端末が Android 6 以上と決まっているなら空列を指定することもできます。その場合は<サウンド種類>の内容によって自動的にタイトルが決定されます。たとえばサウンド種類に「呼び出し音のサウンド」を指定したときは「呼び出し音」というタイトルで表示されます(綴りは Android のバージョンや端末メーカによっても異なります)。
<デフォルトも表示> は真偽値(0か0以外の整数)を指定します。真を指定したとき、音源候補の先頭にサウンド種類に対応した名称のデフォルト音源を表す選択肢が現れます。たとえばサウンド種類に「呼び出し音のサウンド」を指定したときは「プリセット着信音」あるいは「デフォルトの着信音」などの名称で候補が表示されます。(候補名は Android のバージョンや端末メーカによっても異なります)
<サウンド種類> は整数ですが、1や2では意味が不明となるため、以下のいずれかのシンボルで指定することを勧めます。
呼び出し音のサウンド (=整数値 1)
通知のサウンド (=整数値 2)
アラームのサウンド (=整数値 4)
サウンドピッカーの終了通知とは 本定義
サウンドピッカーのダイアログ中でOKボタンやCancelボタンが押されて選択が確定するとこの処理単語がイベントとして呼び出されます。(予約された処理単語なので「○○は 本定義」の形式で定義します)
呼び出されたときスタックには、ボタン番号、音源URI、音源タイトル の3つのデータが積まれているので利用できます。
記述例
URI記憶は 文字列実体 長さ 128桁。
音源タイトルは 文字列実体 長さ 128桁。
サウンドピッカーの終了通知は 本定義 (ボタン番号、音源URI、音源タイトル → 戻値)
_ボタン番号は 変数
_URIは 文字列
_タイトルは 文字列
_ボタン番号と _URIと _タイトルに 入れ
_ボタン番号が OKボタン番号に 等しい
ならば ※ OKボタン ※
_URIと _タイトルを URI記憶と タイトル記憶に 入れ
・・・・・・・・・・・
・・何らかの処理し・・
・・・・・・・・・・・
つぎに
0を 返し。
押されたボタンの識別は二択で良いため、上のソースコードは「_ボタン番号が OKボタン番号に 等しい」のみで判定しています。ちなみに、ダイアログが開いたときのラジオボタン群はすべて非選択になっていますが、そのままOKボタンを押した場合はCancelタップと同じ扱いとなります。またダイアログをAndroid標準の戻るボタンで閉じた場合も同様です。
得られる音源URIはたとえば以下のような文字列です。
content://settings/system/alarm_alert
URIだけでなく音源のタイトル(分かりやすい名称)も一緒に得られます。音源タイトルはたとえば以下のような文字列です。
端末の基本着信音(アラーム音1 (飛び起き))
取得した音源の再生に必要なのは前者の 音源URI だけです。音源タイトルはアプリ利用者に見せる必要がある場合に使います。
■サンプルプログラム SpSndPicker
サンプルプログラム群のうち、次のものを使います。
andrmindSample/
|-- 〜略〜
〜略〜
|-- SoundPicker/
| `-- SpSndPicker.src ←Mindソース
〜略〜
(phrase031.mp3 はフリー素材 'Music is VFR' 様のものを使わせていただきました)
Mind for Android のメイン画面で、「新しいアプリの作成」ボタンを押し、その状態で、サンプルプログラムの上記フォルダ内にある SpSndPicker.src をアップロードします。これにより SpSndPicker というアプリが自動作成されます。
「コンパイル」ボタンを押してコンパイルすると、MindPkgLoaderが動作して端末に自動ダウンロードされるはずです。
SpSndPicker のインストールが終ったら起動してください。次の画面が表示されます。

上記で「デフォルト音の取得」区画にある左端の「呼び出し音」を押します。

上記のように、端末に設定されているデフォルトの呼び出し音が取得され、最下段に 音源URI と 音源タイトル が表示されます。
この状態で「取得したURIで音を鳴らす」ボタンを押すと音を出すことができます。
再びトップ画面を解説します。

上記で「ダイアログで選択」区画にある左端の「呼び出し音」を押します。

上記のようにダイアログが開き、その端末で使える呼び出し音の候補が表示されます。先頭候補の「プリセット着信音」とは端末設定でデフォルトとなっている呼び出し音です(この名称はAndroidのバージョンや端末メーカによって異なります)。
上記でたとえば「Andromeda」を選択し(多くの端末では音が再生されます)、「OK」ボタンを押すとダイアログが閉じ、次の画面になります。

上記のように、いま選択した呼び出し音について、その 音源URI と 音源タイトル が最下段に表示されます。
この状態で「取得したURIで音を鳴らす」ボタンを押すと音を出すことができます。
ちなみに、音を出すのはこのサンプルでは リングトーンマネージャ による再生を使っています。
Copyright(C) 2000 Scripts Lab. Inc.