Android wearをiPhoneで使えるようにした話 - いきさつなどと,仕組み編その1 -

いきさつと整理

だいぶ前のエントリで書いたように,iPhoneでAndroidWearを使えるようにした.

github, APKのリンクと,Playストアリンク

そもそも何に貢献してるのか

Android Wear端末をAndroid OSの載ってるスマホ以外で使えるようにした.
AndroidWear端末のRootを取ることも,iPhoneを脱獄する必要もない. (Root取ると,iPhoneだけで時刻同期ができるようになる.)

Android WearはAndroid用のスマートウォッチなのでそのままだとiOSみたいな異なるOSを使ってるスマホの通知を受け取ったりすることができない.
つまり,iPhoneならApple Watch以外選択肢が無い!という状況を変えることができる.

できること

  • 通知の確認,削除
  • 電話着信の確認,応答/拒否
  • 音楽とか動画の操作とタイトル表示
  • Androidスマホ無しでの時刻合わせ(これだけAndroidWear端末のRoot化が必要)

  • 最近の動画

アップデートする度に動画をYoutubeに上げてる.これは一番最近あげた動画.

www.youtube.com

他にもぼくのチャンネルにいろいろあげてる. www.youtube.com

なぜこれまでこのようなアプリがでてこなかったのか

Android Wearの主眼はNotificationを中心としたユーザとのインタラクションだと思う. そのためAndroidが提供しているフレームワークでは,Notificationを抽象化したAPIを提供することで,スマホ側の通知を簡単にWear側に出したり,それに対するアクションを行うことができる.よってAndroidWearの活用としてはこれが主眼となっており,そもそもこのような提供されたフレームワークから逸脱し,iOSに対処するという考えがあまりなかったのかと思う.(そもそも持ってる人少ないという問題がある……)

この資料がサクッとつかみやすいと思う.

ではどうすればiPhoneに対応できるのか

方法としては以下の2つが考られる.

  • iOS側で対応する

    • iOS側での対処としては例えば,ANCSをAndroid Wearが解釈できるIntentに変換する,
  • Wear側で対応する

    • Wear側での対処はANCSをWearが解釈するメソッドを実装する.

先のSlideshareにもあったように,AppleはANCS(Apple Notification Center Service)というものを利用することを推薦していますので,Wear側でANCSに対応できればよいことになります.
また,Apple watchではBLEを利用するためのAPIが提供されていませんが,Android wearでは提供されているため,実装がしやすいです.
Appleの開発者によると,WatchOS2でも提供していないとのこと……)

次回

Android wearでANCSを解釈するメソッドを実装するために,その仕様について解説します.
ANCSの概要とか,とっかかりについてはいくつかのブログ記事が見られますが,実際に欲しい通知を受け取ったり,通知に対するアクションを送信したりといったところを触れている資料がないのでそのへんを中心に書きたいと思います.

おまけ

iPhoneAndroid wearを使えるようにするアプリのこれまで.

  • @MohamadAGがプロトタイプを作成,動画がバズる.未だに公開されていない.
  • @Shiitakeo(ぼく)がMohammadAGの動画を見て触発され,アプリをフルスクラッチで作り,github,PlayStoreで公開する.日本で全然バズんないけど外国の方には結構人気.
  • @Shiitakeoが,iPhoneAndroid wearの接続が切れた後に自動再接続を行うためのiOSアプリを作成.AppStoreでリジェクトされたため,Cydiaで公開.
  • @Skytek65が@shiitakeoのコードをフォークして,アイコンや,利用方法の動画を加えたアプリを公開.その後のアップデートはなし.
  • AppStoreで公開されているBLEUtilityでも自動再接続が可能なことに気づき,iPhone側で利用するアプリをLightBlueから変更.
  • @alialmahdi が自作したとTwitter,ブログで発言.リジェクトされたという発言の後,特に言及,アプリ公開はない.
  • @GuiyeCがShiitakeoのアプリをフォークし,アプリアイコンやアプリ名の変更,通信シーケンスの改善等を行う.マーケット公開済み.

ぼくは,こんなことできるかなっていうのをプロトタイピングしながら確かめていくのが好きで,今はこのアプリより他のことやりたい(というか他のことしかしてない)ので,熱意のありそうな@GuiyeCさんが引き継いでいい感じのアプリに成長させていってもらえるとうれしいなあと思ってます.OSS感あって新鮮な経験でした.