レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

iPhone/iPadシュミレーターのカメラロールに動画を登録する方法

iPadの動画アプリを作ってるんだけど、iPhone/iPadシュミレーターを使っているとカメラロールに動画が登録できなくて困る。
普通の方法ではできないっぽいが、ちょっと裏技っぽい方法を編み出したので紹介する。

1.準備) 動画ファイルを作る。

iPhone/iPadで読める動画(~.MOVとか)を、なんかしら作ってください。

2.準備) Finderにユーザライブラリディレクトリを表示しておく。

Lionから表示されなくなったらしいけど、Finderに/Users/ユーザの名前/Libraryが表示されていない。
表示しておくと開発に何かと便利なので表示しよう。

  1. ターミナルをひらく。
  2. 以下のコマンドをうつ。

chflags nohidden ~/Library/

3.配置) 動画をシュミレータのメディアディレクトリに配置

Finderなら以下のたどり方

/ユーザ
 → <ユーザ名>
  → ライブラリ
   → Application Support
    → iPhone Simulator
     →

ターミナルなら

/Users//Library/Application Support/iPhone Simulator//Media

*1


ここに以下のディレクトリがあればその配下に移動、なければ作ってください。
DCIM → 100APPLE

最終的には「100APPLE」ディレクトリが以下のような位置にあればOK

/Users//Library/Application Support/iPhone Simulator//Media/DCIM/100APPLE/

で、ここに画像やら動画やらをコピーしておきます。

4.削除) カメラロールのメタ情報の削除

これだけでは、シュミレータのカメラロールは認識してくれません。
iOSが管理するSqliteやplistに書き込まないといけないのです。
とはいえ、これらの構造を理解してSQLをうつのも面倒なので、ちょっと荒技ですが一旦消してしまって、iOSに再構築してもらいましょう。

先ほどのMediaと同じ階層にPhotoDataというディレクトリがあります。

/Users//Library/Application Support/iPhone Simulator//PhotoData

この中身を思い切ってばっさり削除してしまってください。(気になるならどっかにコピっておきましょう)

5.再構築) カメラロール再構築のため画面ハードコピーを撮る

シュミレータ側でカメラロールが再構築をするために、以下の作業をしてください。

  1. 一旦カメラロールのインスタンスを消す*2
  2. 再構築のきっかけを与えるため画面のハードコピーを撮る(シュミレータ上で、コマンド+S)*3

これで、カメラロールが復元され、DCIM/100APPLEに保存した画像、動画が読み込まれるはず。

5.0では確認しました。
あとは自己責任でどうぞよろしく。

おしまい

*1:僕の環境では/Users/daiyamamoto/Library/Application Support/iPhone Simulator/5.0/Media/DCIM/100APPLE/となります。

*2:シュミレータ上でホームボタンを2回押して、実行中のアプリのインスタンスを表示、うち一つを長押しして削除アイコンを表示し、カメラロールのインスタンスを削除

*3:カメラロールに新規の画像が入れば何でもよいからSafariなどで画像保存してもOK