バックグラウンドのストリーミングオーディオ再生のハマりどころ(foryou 岸川様 @k_katsumi)
※コード中心の解説のときはほとんど書き取れてないです。
※後で資料を公開するとの話だったので気力が残ってたら追記します。
もっとも最近に作ったアプリ
- 性格診断
- 短所も長所にもなるよ
- 本を元にしたアプリ
GitHub
- kishikawakatsumi's Profile - GitHub
- http://github.com/kishikawakatsumi
本を書きました。
[429] Client error: `POST https://creatorsapi.amazon/catalog/v1/getItems` resulted in a `429 Too Many Requests` response:
{"message":"Request rate limit exceeded. Learn more: https://affiliate-program.amazon.com/creatorsapi/docs/en-us/concept (truncated...)
- 本屋で見かけたら購入しないまでも見やすい所に置き直して下さいw
UIButtonでタイトルと画像を両方を使う
- 画像は右側に押し出されている
- UIButton#titleEdgeInsets UIEdgeInsets を使えばボタンを押したときに違う表示ができる。二番目のパラメータを画像のサイズ分マイナスする(記述者注:UIEdgeInsetsMake()の二番目のパラメータって事かな?)
便利ツール
カラーピッカー
- Developer Color Picker
- http://www.panic.com/~wade/picker/
- 昔からのMacユーザにはおなじみのGraphicConverterに付属のツール
- (これかな?)GraphicConverter:定番!ピクチャーを多数のフォーマットやプラットフォーム間で変換することができます。
- Bridge 1 Software|http://www.bridge1.com/graphicconverter.html
xscope
- Iconfactory : Software : Xscope
- http://iconfactory.com/software/xscope
- ツールバーから「拡大鏡」や「定規の表示」など色々な機能を使える
ImageOptim
- ImageOptim – a PNG/JPEG/GIF optimizer for Mac OS X
- http://imageoptim.pornel.net/
- 何回も圧縮しても圧縮が効く事が有る。
SpeedLimit、ネットワークの速度を抑えるツール
- ネットワークの通信速度を制限する Preference Pane "SpeedLimit" - 24/7 twenty-four seven
- http://d.hatena.ne.jp/KishikawaKatsumi/20100815/1281821958
LLVM
コンパイル速度、速い
バックグラウンド再生
- 4.0以降
- バックグラウンドでも音声の再生が可能。音楽やネットラジオの再生が可能
- ストリーミング再生に対応
- iPad コントロールから操作が可能
- テスト環境はiPod touchでもOK
- シミュレータとは大事なところの挙動がちょいちょい異なる
音楽をしっかりしたいときは
- 「iPhone Core Audioプログラミング」おすすめ
- kAudioSessionCategory_MediaPlayback がデフォルトでONのはずですが実際はONで無かった
- 音楽が鳴りならが再生などを指定。
- 音を鳴らす方法
- AVAudioPleyr
- AudioQueue
- OpenAL
- and so on...
- Info.plist で Required background modes で App plays audio を選択
- メディアプレイヤーバックの宣言が必要(BackgrounAudio TaskCompelation が関係する)
- シミュレータだと設定が不足していても鳴る事が有るため気を付ける必要が有る
バックグラウンドタスクを開始する
(※すみません、書き取れませんでした)
やった方が良いステップ
(※すみません、書き取れませんでした)
RemoteControlEventを処理する
- iTuene用のコントローラがアプリから利用可能
- 再生、停止、スキップ、シークが可能
- 再生し始め、またはアプリ開始時に設定(beginReceivingRemoteControlEventsを呼ぶ)
ビューコントローラに実装する場合
- firstResponderになっておく必要が有るのに注意。設定するタイミングにも注意が必要
- 画面遷移をしても再生を続けるときはUIWindowに設定
- ネット上のファイルの再生時の「シーク==レジューム」。部分的なGETで対応可能
おすすめサンプル
- DigitalDJ's AudioStreamer at master - GitHub
- http://github.com/DigitalDJ/AudioStreamer
ナビゲーションバーの背景の変更について
- カテゴリで拡張→メールのアドレス一覧のViewなどでナビゲーションバーが二重に表示される様な事がある。
- サブクラスで実装。
iPad背景画像はパターンで塗る
- 自動回転への対応の面から
- 省メモリ
- メッシュパターンを使うと横向きにしたときに画像が引き伸ばされた様になる
質疑応答
- アプリとiPodアプリを同時に使うとコントローラはどちらのものになる?→後で起動したものコントローラとなる。
- アプリとiPodアプリを同時に起動したときに後から再生したものを停止するとコントローラは先に起動した場合
- iPadを鳴らしながらドラムの音を鳴らすと同じ様に自分のアプリを再生中にドラムを鳴らす様な事は可能か?→可能。iPodと同じ挙動
- ネット上からストリーミング再生では無く、ローカルでの音楽を再生するときに参考になるサンプルは無いか?→AVFoundation辺りでAppleのサンプルやGoogle検索。先程紹介した「iPhone Core Audioプログラミング」
最終更新:2010年09月26日 22:43