Skip to content

2014年8月定例会 Android Wear & Google Glassの最新動向

Takayuki Yorikane edited this page Aug 22, 2014 · 1 revision

2014/08/21 Android 定例発表会
https://www.android-group.jp/event/event32.html

19:00 - 19:05 開会挨拶 (8月定例会コーディネータ:近藤昭雄)

19:05 - 19:25 1.Google Glassアプリ開発と自由度の変遷 講演:有限会社シーリス 代表取締役 有山圭二様(@keiji_ariyama)

Google Glassとは

  • 処理装置も入ってるメガネ
  • Glass 今は第3世代
  • 耳の後ろにCEマーク

GlassのUI/UX

  • 640 x 360 ピクセル
  • 自分の視界のはしっこにディスプレイがある感じ
  • タッチパッド:スワイプバック/スワイプフォワード/スワイプダウン
  • ボイスコマンド
  • タイムラインというUIを持っている
  • viewpagerのように過去未来を遷移
  • カード
  • タップするとカードに対応したメニュー表示

Glassアプリケーション開発

  • Mirror API or GDKを利用

Mirror API

  • Google Server ⇔ Glasswear MirrorAPI
  • GlassとGoogle Serverは分からないプロトコルで通信している
  • Glasswear ⇔ ユーザ ⇔ Glass
  • OAuth2.0で認証してJSONでデータを送受信するRESTfulなAPI
  • アップデートが発表されていないので使うことないんじゃないのか
  • Glassの位置情報取得、位置情報更新、GlassからGlasswearに操作イベント送信、情報を送信
  • 使用制限が 1000 req/day。Subscriptionsを使うと、ValidなSSL証明書が必要になる

GDK(Glass Development Kit)

  • 2013/11に公開
  • Android SDKに加え、GDKのライブラリを利用
  • 開発アプリのインストール
  • adbデバッグを有効化 (Turn on debug)
  • 開発PCとUSBケーブルを接続
  • ボイスコマンド
  • xmlでトリガーなどを指定
  • Googleが認証したアプリしか候補に出ない
  • 新しいパーミッション、Developmentにすれば、認可してないアプリも画面に出てくる

Immersive

  • Activityを使うMODE
  • Glassのimmersiveだよってことを、AndroidManifestに定義すると、GlassのUIで表示される

Live Cards

  • タイムラインの中にカードを追加するMODE
  • Serviceから操作
  • 種類
  • RemoteView
  • Surface:SurfaceViewを使ったパターンに近い

GlasswearのUI設計

  • スマホではない!画面が触れない
  • あくまでもタッチパネルで操作することを忘れずに

tips

  • 機内モードの有効・無効が出来なくなった

  • adbモードでairplayを投げる?

  • アプリのアンインストール

  • adb任せ。adb uninstallで削除

  • adb shell pm list packages

  • 写真の自動バックアップ

  • ネットにつながってたら、勝手にGoogle+にアップしちゃう(おせっかい)

  • Googleアカウントを開発用にした方がいい!!

  • 恐怖のアップデート

  • 自動でアップデートがかかる(ネットつながる環境)

  • アップデートかかる前提で開発は進めた方が良い…

  • アップデートを回避するには?

  • On-Head Detectionを有効にして、Glassを装着し続けること(無理やww)

Glassのこれまで

  • 月1ペースでアップデートが繰り返されている

  • バージョンアップ追加機能

  • ウインク検知

  • Contextual Voice Commands

  • Webカメラの接続

  • 消えたTimelineManager(XE16)

  • 勝手にバージョンアップしちゃうので、エラーだらけに。。

Glassのこれから

  • Android Wearプロトコルへの対応
  • Glasswearプラットフォームの開放
  • Android Lへの移行
  • Material DesignはGlass UIにどのように影響するか??

19:25 - 19:45 2.Android Wearの概要とアプリ開発の基礎 講演:iplatform.org 神原 健一様 (NTTソフトウェア株式会社所属)(@korodroid)

Android Wear関連トピック

  • 2014/06にAndroid Wearの正式版が発表
  • パートナー企業開発のAndroid Wearアプリも増えている

Android Wearの概要

  • ウェアラブルに特化したAndroid

  • 代表的な3つの特徴

  • Notification

  • 音声入力

  • ユーザが作ったアプリがインストール出来る

  • 対応デバイスが既に発売中

  • LG

  • モトローラ (まだ買えない。円形時計)

  • サムスン

  • スマホ・タブレットと連動した動作

  • ウェア ⇔ ハンドヘルド うまく連携

  • ペアリング

  • ex) ハンドヘルドに届いた通知 → ウェアに転送。通知がウェアで確認出来る

  • Android Wear対応アプリの状況

  • 対応アプリは少しずつ増加傾向

  • 対応アプリの例

  • Facebookメッセンジャー

  • いいね、返信する(音声入力)

  • PayPalアプリ

  • Start Shopping → 決済をその場で。領収書が通知で。

  • セカイフォン

  • ウェアでアプリ起動 → 翻訳など

アプリ開発の基礎

  • Android SDK、IDE、Android Wear System Image or Android Wear実機、Android 4.3以上のハンドヘルド

ウェアアプリ開発のポイント

  • 通知の表示

  • Notification Builderで作成。managerでnotifyメソッドで発行

  • compatがちゃんとついたものを使わないとちゃんと動作しない

  • 通知のカスタマイズ

  • 画像表示、長い文章の場合の最適化、通知のグルーピング

  • 通知のアクション

  • スワイプで電話発信(Intent)。addAction

  • 音声入力

  • RemoteInputのBuilderを使って、Action.Buiderに渡し、notification発行

  • WearableExtenderなどを使う

  • パッケージング

  • GooglePlayアプリ公開時に要注意

  • ハンドヘルド用アプリBuild → ウェア用モジュールも込めてあげる。lapk

  • ユーザがGooglePlayでダウンロードしようとすると、同梱されてアプリが落ちてきて、ペアリングしてればウェア実機にも入る

  • build.gradleで定義する

  • データの送受信

  • ハンドヘルドとウェアアプリ間の通信

  • Data Layer API: スマホとウェアラブル間のデータ同期

  • Message API: スマホとウェアラブル間メッセージング

  • リファレンス

  • Android Wear 開発者ドキュメント

  • 通知機能(≠Android WEar)に関する書籍

  • 通知機能プログラミングガイド

おわりに

  • WearアプリのUI/UXはシンプルに
  • バッテリー持ちには配慮を!
  • 普及には、コンテンツの充実が必須!!

19:45 - 20:05 3.Android Wearのマスコットアプリの作り方 講演:株式会社 Re:Kayo-System 代表取締役 寺園 聖文様(@yokmama)

マスコットアプリについて

  • 可愛らしいアイルーが常時画面で踊っている
  • 他のアプリが起動すると自動でk消える
  • タッチすると自作アプリのランチャー起動
  • ウォッチフェース終了で表示されなくなる

マスコットアプリプログラム解説

  • WatchFaceに連動

  • WatchFaceActivity → マスコットアプリ → ランチャアプリ

  • WatchFace起動時にOnResume。pause時にOnPause

  • マスコットの表示

  • WindowManagerクラスのaddViewを用いてアプリケーションレイヤーの上に表示する

  • 表示レイヤー

  • TYPE_SYSTEM_ALERT

  • バッテリーなどのシステム警告レイヤー

  • Animation

  • animation-listタグを用いる

  • GIFでも試したけど、GIFを使うメリットは無かった

  • タッチ処理

  • イベント処理

  • 関連ありそうなイベント

  • OnResume, OnPause連動。

  • ACTION_POWER_CONNCTEDなど

  • Alermを用いて時間と連動

  • WatchFaceに連動

  • 常に表示

  • android.permission.RECEIVE_BOOT_COMPLETEDでServiceを自動起動し常に常駐(バッテリーにやさしくない)

  • ジェスチャーに応じて表示する

  • バッテリ連動

  • 時間と連動

  • Ambientの判定

  • isInteractive()でAmbientと判定することもできる

  • 実装例

  • レイヤーの追加処理

  • タッチ処理を実装するならFocusが取得出来るレイヤーにする

  • AnimationのOn/Off - WatchFaceに連動してServiceへ通知

  • タッチ処理

  • falseを返さないと他のViewにタッチできない

  • マスコットアプリについて

  • かっこよければOK、かわいければOK

  • LGはおすすめしない

  • 高すぎる

  • カッコ悪い

  • 壊れやすい

  • バッテリがもたない(体感で1日程度。使い方によっては3時間程度で切れる)

  • 充電がめんどくさい

  • 買うべき理由

  • ハッカーだから


20:05-20:10 休  憩

20:10 - 20:30 4.Android Wear の watch face アプリ作ってみた & 正式対応時のAPI予測 講演:株式会社uPhyca 代表取締役 あんざい ゆき様(@yanzm)

slideshareを見てね

Band O'Clock for Wear

  • bit.ly/1oY7zUO

Watch faceアプリの作りかた

  • タグとをセットすると、watchface一覧にActivityが出てくる

  • Ambientの検知

  • IntentFilter、BroadcastReceiver。

  • watch faceのライフサイクル

  • onCreate -> onStart -> onResume -> Ambientに移行 -> onPause -> onStop

  • 別のwatch faceに切り替え -> onDestory

  • Trap!!!!

  • 通常:TextView.setText -> onLayout(), onMeasure(), onDraw()

  • Ambient:TextView.setText -> onDraw()しか呼ばれない

  • 時計に重ねるviewはmatch_parentでpaddingで表示調整

  • Samsung Gear LiveではAmbient時に半透明が使えない

  • Phone側 -> DataApiを利用して、wear側でDataApi.DataListener

  • Google+のAndroid Wear Developerで宣伝したら良い反応

  • 正式対応

  • techcrunchの記事

  • 現状の限界

  • 充電などのアイコン位置を変えられない

  • プリインのwatch faceは変更出来ている。出来るようになるんじゃないか

  • カードの大きさが変えられない。

  • プリイン(ry

  • ガイドライン

  • watch faceって単なるActivity

  • ほぼなんでも出来る

  • app widgetよりかなり自由

  • 電池へのインパクト大

  • プリインはwatch faceはAmbientは分単位 → 電池のために描画を減らす

  • プリインはwatch faceはAmbientは白黒 → ドキュメントで電池節約するよう言われるかも?

bit.ly/1wuaQMe


20:30 - 20:40 5.(仮)Android Wearアプリ 講演:株式会社ブリリアントサービス プランナー 有川 光太

アプリ:toStar(友情証明アプリ) 言葉の代わりにスターを贈るアプリ:つまりYo

ラリーカウント機能:スターを返しあった回数カウント 制限時間:30分以内に返さないとスターがゼロになる

友達を証明するには! いつでも、すぐに、どこまでも続けないと!

Android wearの特性

  • えげつないほどの通知レベル
  • 気づかないと言い訳通用しないくらい。待ち合わせとか便利
  • でも操作性には難あり
  • フリック&全面タップ以上のことは難しい

toStarは本日8/21リリースしているはず!


20:40 - 20:50 6.(Google Glassネタ) 講演:学生 @amyu_san様

Google Glassで顔認識

  • 顔認識機能を当面禁止 → プライバシー問題

  • 勝手に作る

  • 通常のSDKで顔認証:FaceDetector

  • FaceDetector + SurfaceViewでいい感じのリアルタイム顔認識

  • 認識しない!FaceDetectionListenerの、android.hardware.Camera.Face[].lengthが常に0

  • FaceDetectorは顔に焦点があった場合に顔を識別

  • Glassは固定焦点カメラなので顔検出に適用されない

  • OpenCV + NDK + GDKで試す

Hot Pepper for Google Glass

  • VoiceTrigger: Search a Restraurant

  • 現在地からの距離や座席数など

  • それぞれのMenuで、電話やナビやマップなど

  • ネットワーク接続失敗してたらエラー画面表示

  • 注意したこと

  • CardScrollView + CardScrollAdapterなどGDKで提供されているView

  • 小さい画面に最適化してくれたのがCardなはず

  • Menu

  • 少ない動作で色々提供してくれる

  • 2重のMenu表示はしないようにした

  • アイコンがGlass仕様じゃない

  • 白黒な感じがいいっぽい

  • VoiceTriggerが長くて反応しない

  • Search a Restaurantの発音が難しすぎるw

  • やりたいこと

  • Voice Triggerの日本語対応していきたい


20:50 - 20:55 7.産休前のひとしごと - tFakeCall 講演:タオソフトウェア株式会社 みゆき様 (@okayama_m)

tFakeCallとは

  • 時計をワンタッチするだけで、ニセの着信が鳴るように操作するアプリ

  • 利用シーン

  • 離席したい会議、飲み会、合コンで抜け出したいとき

  • スマホがポケットにあってもならせるから、より自然にw

  • 使い方

  • MobileとWearどちらかの操作で通知(着信開始ボタン)を表示

  • 使いたい時に押下、着信

  • Wear端末の色々

  • Wear端末をドッグに差しているときVibrateはオフになる

  • Notification表示時、setVibrate()を指定していても、ドッグ差してるとならない

  • Notificationの背景がぼやける

  • WearのNotification背景の2つの設定方法のうち、setLargeIcon()でぼやける

  • bitmapをcreateしてsetするとぼやけない

  • 未接続時、通知をタップすると「エラーが発生しました」

  • クラウドファウンディング

  • https://motion-gallery.net/projects/taovisor


20:55 - 21:00

くるくるディスプレイを見せてもらった

閉会挨拶 (8月定例会コーディネータ:近藤昭雄)

Clone this wiki locally