2015年5月16日土曜日

Apple Watchで、カメラのシャッターを切るアプリのサンプルを作ってみた

いちおうapple watch対応のアプリ
https://itunes.apple.com/us/app/flkpermitter/id982128143?mt=8
を出している私。
デベロッパーっぽい内容の記事があってもいいだろうと思ったので、今回のエントリを書いています。

前にフリーのデベロッパである堤さんが書かれていたブログに
http://d.hatena.ne.jp/shu223/20150424/1429850973
apple watchからカメラのシャッターが切れる
という記述があったので、実際に手を動かして作ってみるかと思い、今回ちゃっちゃと作ってみました。
コレ。
https://github.com/sohichiro/cameraRemote

作り方はとても簡単で
・iphoneアプリで、カメラを動作させる
・シャッターを切るメソッドを公開する
・AppDelegate上で、handleWatchKitExtensionRequestを実装して、その中で、シャッターを切るメソッドをコールする

・watchアプリをターゲットに追加する
・ボタンを追加する
・ボタンのアクションとして、openParentApplicationをコールする 。これはAppDelegate上のhandleWatchKitExtensionRequestをコールするトリガというだけ。

という感じ。

カメラを起動させる実装は、クラスメソッドさんの記事がとても参考になりました。というかほぼコピペ。コピペしただけで動作できるレベルの記事を公開していただいてありがたい限りです。余談ですが、ViewController.mにすべきところがViewController.hになってますね。読む人が読めば分かりますが。。
http://dev.classmethod.jp/smartphone/ios-camera-intro/
今回は一番簡単なUIImagePickerControllerを使う方法で、カメラを起動する実装しました。

ほぼほぼクラスメソッドさんが公開されている記事をコピペして作ったViewControllerに、外部からカメラのシャッターを切るメソッドを追加しています。
//以下の記述を.mファイルに。
-(void)takePicture
{
    // 写真を撮る
    [self.pickerCtr takePicture];

}

//以下の記述を.hファイルに追加

-(void)takePicture;

追加したメソッドを、AppDelegateのhandleWatchKitExtensionRequest内でコールすると。これで、iPhone側の実装は完成。あ、AppDelegate.mにViewController.hをインクルードするのを忘れずに(それは僕だけか笑)

続いて、watch側の実装。
Xcodeのメニューから、File>New>Targetと選び、templeteを追加する画面から、WatchKit Appを追加。
プロジェクトに、WatchKit Extensionと、WatchKit Appが追加されます。

で、WatchKit Appには、Interface.storyboardがあるんで、iphoneアプリのstoryboardに追加するのと同じように、ボタンを追加。ボタンからピーと線を引っ張って、アクションをWatchKit ExtensionのInterfaceControllerに追加っと。

作成したアクションに、openParentApplicationを実装して、一応今回の目的であるカメラのシャッターをApple Watchから切ることが出来る最小限のアプリが完成します。

一応サンプルをgithubにおいておきますので、詳細はコードを確認していただければ。
https://github.com/sohichiro/cameraRemote

とはいえ、カメラを使うコードなので、動作の確認は実機で行っていただければと。
あと、認証コードはどーなんだろう。。

ではでは。

0 件のコメント :

コメントを投稿

スポンサードリンク