AIR3.0を利用したiPhoneでの出力スピーカーの選択

AIR3.0では、flash.media.SoundMixerクラスに、2つの静的プロパティ、「audioPlaybackMode」と「useSpeakerphoneForVoice」が追加されました。
この2つのプロパティは、主にスマートフォン端末において、サウンド再生時に使用するスピーカーの取得/設定を行うためのものです。

また、この2つのプロパティを利用すると、AIR2.xでの「AIR for iOS」では解決できなかった、iPhoneでの特定サウンド再生時の問題を解決する事ができます。

iPhoneの持つ2つのスピーカー
iPhoneの2つのスピーカー

 

音声出力に関する2つのクラスプロパティ

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;


AIR2.xでの問題とAIR3.0での解決方法

さて、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 吉岡 梅