AIR3.0では、flash.media.SoundMixerクラスに、2つの静的プロパティ、「audioPlaybackMode」と「useSpeakerphoneForVoice」が追加されました。
この2つのプロパティは、主にスマートフォン端末において、サウンド再生時に使用するスピーカーの取得/設定を行うためのものです。
また、この2つのプロパティを利用すると、AIR2.xでの「AIR for iOS」では解決できなかった、iPhoneでの特定サウンド再生時の問題を解決する事ができます。
flash.media.SoundMixerクラスに追加された2つのクラスプロパティの設定を見てみましょう。
flash.media.SoundMixer.audioPlaybackModeプロパティ
音声をアウトプットするスピーカーを指定します。指定できる値は、「flash.media.AudioPlaybackMode」クラスに用意された2つの定数「VOICE」と「MEDIA」です。
AudioPlaybackMode.VOICE | ボイス・スピーカー(通常、通話時に利用するスピーカー)を指定する際に利用します。 |
AudioPlaybackMode.MEDIA | メディア・スピーカー(通常、音楽などの再生時に利用するスピーカー)を指定する際に利用します。 |
iPhoneを例にとってみましょう。iPhoneには通話時に使用するスピーカー(仮に「ボイス・スピーカー」とします。耳元のスピーカです)と、本体下部にある音楽等を再生する際に利用するスピーカー(仮に「メディア・スピーカー」とします。)の2種類のスピーカーがありますね。
このそれぞれが、AudioPlaybackModeクラスの2つの定数に対応しています。
例えば、明示的にメディア・スピーカーから音を再生したい場合には、以下のようにコードを記述します。
import flash.media.SoundMixer;
import flash.media.AudioPlaybackMode;
SoundMixer.audioPlaybackMode = AudioPlaybackMode.MEDIA;
flash.media.SoundMixer.useSpeakerphoneForVoiceプロパティ
通話時や、マイクを使った録音時等の「通話モード」時において、メディア・スピーカーを出力として使用するかどうかをブール値で設定します。
「通話しながら相手の声をスピーカーから出力する、いわゆる『スピーカーフォン』」のように使うかどうかを指定できるわけですね。
デフォルト値は「false」です。
明示的に「スピーカーフォン」状態で音を再生したい場合には、以下のようにコードを記述します。
import flash.media.SoundMixer;
SoundMixer.useSpeakerphoneForVoice = true;
さて、2つのクラスプロパティをご紹介したのですが、この2つのプロパティを利用すると、AIR2.xでは解決できなかった「マイクから録音したサウンドを、『SampleDataEvent.SAMPLE_DATA』イベントを利用して再生した場合、ボイス・スピーカーから音が再生されてしまう。」という問題を解決することができます。
(逆に言うと、AIR2.xでは、上記の問題をシンプルに解決する方法は、筆者の知る限りありません。)
録音したデータを再生する際に、
import flash.media.SoundMixer;
import flash.media.AudioPlaybackMode;
SoundMixer.audioPlaybackMode = AudioPlaybackMode.MEDIA;
SoundMixer.useSpeakerphoneForVoice = true;
としてから再生をしてあげれば、メディア・スピーカーからマイクを使って録音した音声が出力されるはずです。
いわゆるボイスメモアプリを作成する場合には、活用できますね。
また、ノベルアプリを作成する場合に、わざと囁くような音声をボイス・スピーカーから出力する、なんていうのも効果的な処理かもしれません。
特にiPhoneでのスピーカーの問題に直面している方は、AIR3.0を導入し、この2つのクラスプロパティを使った処理を試してみて下さい。
ただし、現状Flash CS5.5やFlash BuilderでAIR3.0を使用する方法は、正式にはサポートされていませんのでバックアップを取ったうえで、自己責任にて環境のセットアップを行ってください。
■参考資料
-AIR3.0用リファレンス(ベータ版)::flash.media.SoundMixerクラス
http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/media/SoundMixer.html
-Adobe上条さんのblog::Flash Professional CS5.5 で Flash Player 11 と AIR
3 を使う方法
http://cuaoar.jp/2011/10/flash-professional-cs55-1.html
---
2011/10/25 吉岡 梅