oF_iosでカメラやライブラリを使う

openFrameworks iOS版でアプリを作る人ってどれくらいいるのでしょうか?
あんまり情報転がってない気がするので少ないのかしら。

openFrameworksのexampleを一通り確認したりすると思いますが、その時は以下が参考になります。こういう記事ありがたいですよね。
https://qiita.com/shu223/items/e28110bf729fdf8712e0
http://bick.xyz/archives/427

で、実際にサンプル適当に動かしてみようとすると、たとえば videoGrabberExampleなどで、ビルドは通るけど、実行時(カメラ起動時)に以下のエラーが出ました。

videoGrabberExample[13251:5503360] [access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

で、調べてみると、iOS10以降では、どうやらiPhone等でカメラを使うよっていう許可アラートを表示させる設定が必須みたいです。
要はカメラとかマイクとかライブラリとか連絡先とか、そこらへんを使用する際にはアクセス許可のアラートを設定する必要があるそうです。

たしかにカメラとかマイク使うアプリ入れた時に使用してもいいですか?ってアラートあるよね。あるよね。

ちょっと調べた感じではswiftなどでの対策が出てくるけど、じゃあoFでどうするのってところは特に記事なかったので一応メモ📝


参考にした記事
https://qiita.com/Takumi_Mori/items/f53c6eec1676d3df59dc

https://dev.classmethod.jp/smartphone/iphone/ios10-privacy-data-purpose-description/

によると、info.plistってファイルにアラートについての追記をするらしい。

oFではこれが、ofxiOS-Info.plist というファイルに該当します。

ここで右クリックでAdd row

Priと入力して「Privacy – Camera Usage Description」などを追加します。
(Pは大文字じゃないと補完が効かないみたい。)

横のStringにはアラートに表示させる文章を入力します。ちなみに\nなどは反映されない模様。

of_iosのサンプルImagePickerExampleの場合だと、カメラの使用とライブラリの使用と、ライブラリへの追加、の3行を追加します。以下のような感じ。

Localizationを変更するとカメラ画面の「写真」や「キャンセル」などが変更されます。はじめはたぶんEnglishとかなのでJapanに変更しました。

 

これでビルドすれば、カメラ起動時にアクセス許可のアラートが表示されます。

一回OKすればあとは表示されないはず。

 


カメラのシャッタースピードとか調整したいんだけど、そこらへんはswiftとかじゃないと難しいのかなあ。
SetDesireFrameなる関数がofVideoGrabberにあるのですが、これを設定しても特に変化が見られなかった。。。

ちなみにiosでカメラを扱うには、ofxiOSImagePickerを使うやり方と、ofxiOSVideoGrabber(ofVideoGrabber)を使うやり方があるみたいです。この辺はおいおい見ていきたい。
あとsetDeviceIDでiPhoneのフロントカメラか、バックカメラ?か選択できます。

openFrameworksでアプリ楽に作って試せるのはおもしろい。
oF勉強して作ったものをアプリにして持ち歩いて、友人にどんな仕事してるのって聞かれた時に、こんなことって言えたら、ドヤスマートかも。