- 2011-08-31 (水) 22:20
- ActionScript | JavaScript | SmartPhone
スマートフォン向けのWebアプリを作る際に調べたこととかそんな感じのことの自分用メモ。 音声再生周りのことに関して、でもAudioのことだけとは限らない。
iPhoneの場合
- Audio + JS で再生
- iOS4.0以上で再生可能であることを確認
- iOS4.1以下(もしくはiOS4.0のみ)と、iOS4.2以上で再生処理に差異があることを確認
- 発生するイベントの違い
- イベントが発生するタイミングの違い
- canplay イベントを jQueryの trigger で無理矢理発火できるかの違い etc.
- 【JS】iPhoneのAudio周りのメモ
基本的には、タップなどのユーザー任意の動作によってでしか再生できない。 が、「jsdo.it/wonderfl meetup vol.2」で@kyo_agoさんや@GeckoTangが言っていたように、 [無音+必要な音源1+必要な音源2+...]のように、複数の音源を一つの音声データとしてまとめてしまい、 音声が必要となるページへのアクセス後、タップなどのイベントを取り、 [データ読み込み→無音部分を再生→無音部分をリピート or 無音部分でストップ] とすることで、こちら側の任意のタイミングで、任意の音声を再生することができる(かもしれない) AudioSprite みたいな感じ(CSSSprite的な感じで) ページ遷移が必要な場合全てJSで行い、Audio再生可のフラグを持ち回す。
っていうのをやってる人が他にもいた。 【HTML5】iPhone向けWEBアプリで、Audioを使ってみてハマった点 | RIAxDNP
■2012年5月11日追記
GREEのアプリで AudioSprite をやってるっぽい。http://pf.gree.jp/67
懸念点としては、
- ページ遷移をJSで制御しなければいけない
- 音源のサイズが大きくなると初回取得時に取りに行く時間が長くなる
- 音源に権利がある場合(声優を使った場合など)加工にあたるのかどうか
- メンテナンスがちょっと大変(ツール作れば解決できそうだけど)
などなど。
あと、サイレントモードは無視。 アプリ側でフラグを持って、volume かなんかで適宜対応してやる必要がありそう。 この辺は未確認。
Androidの場合
iPhone同様Audio + JSでの対応を試みたものの
- Audio 自体のサポートがメーカー依存
- JS側の挙動も不安定
という理由から、Flashで対応することに。
// ここから FlashPlayer の話
前提
- SWFはPlayer10用にパブリッシュ
- Player10.1を載せられるのは、Android2.2から
Player のバージョンチェック
Android版リリース後、Flashが再生されないなどの報告を受ける。 Playerのバージョンチェックをしていなかったので、処理を入れる。
プラグイン名、バージョン、リビジョン番号を返す(ググればたぶんすぐ出てくる)
[JS] navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin.description [/JS]
これでPlayer10.1かFlash Lite4.0かを調べたい。 Player10.1 :” Shockwave Flash 10.1 rxxx ” (xxx は不特定な数字) Flash Lite4.0 :” Shockwave Flash 10.1 r123 “
これにより、”r123“とついているものが(恐らく)Flash Lite4.0っぽいので、 これを弾く処理を追加する。 (判別方法についてもっと確実な方法があれば誰か教えてください)
Player 10.1を載せられる端末
前提として、Player10.1を載せられるのは、Android2.2から としたものの、ログをたどってみるとどうやらそうとも限らないらしい。
Android 2.1-update1 というバージョンが存在するらしく、 このバージョンのものは、Player 10.1が載る(場合もある(らしい))。
このバージョンでPlayer 10.1が載るという事例は、
- HTC Desire / SB
- IS03 / au
- IS04 / au
などの端末で確認している。 (これらの端末/OSバージョンでも、前述のチェックで弾かれているものもある。ユーザーが入れてないだけ?)
なんかめんどくさくなってきた。
Lynx 3D(SH-03C)について
Lynx 3D(SH-03C)において、 「OSバージョンも、Playerバージョンも最新なのにFlashが再生されない」 という報告を受けているが、原因不明。
この端末、ネイティブな部分でも色々とバグがあるようなので、 正直端末のせいにしてしまって良いんじゃなかろうかという気さえする。
ていうかもうほんとにめんどくさい。
// ここまで FlashPlayer の話
最終的にAndroidでFlashを使って、且つ、 「○○○ー」とか「○○ー」とかに出すアプリの場合、 Flash Lite4.0 向けにパブリッシュした方が無難である。 という結論に至った。
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://unolabo.boo.jp/archives/2011/08/31-%e3%82%b9%e3%83%9e%e3%83%bc%e3%83%88%e3%83%95%e3%82%a9%e3%83%b3%e3%81%a7%e3%81%ae%e9%9f%b3%e5%a3%b0%e5%86%8d%e7%94%9f%e3%81%be%e3%81%a8%e3%82%81.html/trackback
- Listed below are links to weblogs that reference
- 【iPhone,Android】スマートフォンでの音声再生まとめ from うのらぼ。