2012年6月3日日曜日

Cordovaからの音再生

Cordovaを使ってのmp3再生について調べています。
HTML5標準の再生機能もありますが、その再生の都度ファイルを読みに行くのかレスポンスがあまりよくありません。
API等を使った場合にはその問題が大幅に解消されました。
尚、Xcode4.3.2Cordova1.6.0を使用しています。
【HTML5標準】→多重再生×、iPodの曲停止。そのまま移植できるのでWebアプリからの移植が容易。簡単に使えるけど再生指示を出してからのレスポンスは悪い。
使い方はあちこちに書いてあると思うので省略。

【Cordova標準のMediaAPI】→多重再生×、iPodの曲停止。レスポンスは比較的良い感じ。録音ができる。
使い方は公式サンプルを参照。(リンク先はCordova1.7)

【PGLowLatencyAudio】→多重再生○、iPodの曲停止(同時再生については後述)レスポンスは比較的良い感じ。
導入はちょっと面倒。使用方法を以下に記載。
  1. プロジェクトのPluginsにプラグインのiPhoneフォルダの以下のファイルをドラッグして投入。
    PGLowLatencyAudio.hPGLowLatencyAudio.mPGLowLatencyAudioAsset.hPGLowLatencyAudioAsset.mPGPlugin.hPGPlugin.m
    (PGPluginはこの辺からダウンロード)
  2. PGLowLatencyAudio.hを開き、以下の部分
    #import <PhoneGap/PGPlugin.h>

    #import <PGPlugin.h>
    に書き換える。
    書き換え忘れるとエラーに。
  3. Cordova.plistのPluginsに「PGLowLatencyAudio」を追加(keyとvalueの両方)。
  4. 使い方はサンプルを参照。
    phonegap-1.3.0.jsの部分を使用しているCordovaのバージョンに置き換えるのを忘れずに。
preloadFXを呼び出す場合は、AudioToolboxフレームワークを追加しておく必要があります。
(Androidの場合はSoundPoolクラスを使うらしい?)
しかしながらpreloadFXを使った場合に、ちゃんとファイルも読み込んでplay自体もSuccess扱いになるんだけども音がならないという問題にひっかかっています。
AudioToolboxではmp3が開けないという記述をみかけたのでwavやaifファイルも試したけど解決できずにおります。
(更に、シミュレータ上では再生されるという不思議)
通知音扱いなのでマナーモードだと再生されません。

追記)iPodの曲再生を止めたくない場合にはAVAudioSessionクラスを使えば良さそう。
しかし、それを使ったCordovaプラグインがなさそうなので、
PGLowLatencyAudioプラグイン辺りをいじって対応させるしかない・・・?
追記その2)
iPodの音楽との同時再生ができるところまで進みました→http://koyoy-lab.blogspot.jp/2012/06/cordova_07.html

0 件のコメント:

コメントを投稿