DevFest 2015 (Google I/O 2015 報告会)の時の発表資料です。
DevFest2015SpeakerAndroid Mupdate抜粋安生 真
View Slide
AgendaAndroid M・指紋認証・Backup・バッテリー効率向上・Doze・App stanby・通知アイコン・テキスト範囲選択・App Links・Bluetooth スタイラス・RenderScript・カメラ(トーチモード)・MIDI・ハイレゾオーディオ・追加ストレージ・ART
2つのAPIFingerPrint 指紋認証・FingerprintManager.authenticate()・指紋で認可をとる・アプリ側でUIコントロールは可能・KeyguardManager.createConfirmDeviceCredentialIntent()・ロックスクリーンを表示・startActivityForResult() で 確認・Sample codegithub.com/googlesamples/android-FingerprintDialoggithub.com/googlesamples/android-ConfirmCredential
Confirm CredentialとはFingerPrint 指紋認証・KeyguardManager.createConfirmDeviceCredentialIntent()・ユーザーが何分前に端末をアンロックしたかを取得できる→n分前未満 なら 処理を続行→n分以上ならアンロック画面をその場で表示、続行するためにはユーザーにアンロックしてもらう・正しいユーザーが使っているかどうかを確認する。決済処理や、資産管理系アプリなどの前に使うことを想定
アプリの全データがデフォルトでバックアップされるAndroid Backup・targetSdk M・何も設定しなければ全てバックアップされる・細かく設定も可能・xml/resource 内にscheme ファイルを作って設定・include / exculde
Android BackupAndroid Mアプリの全データがデフォルトでバックアップされる・targetSdk M・何も設定しなければ全てバックアップされる・細かく設定も可能・xml/resource 内にscheme ファイルを作って設定・include / exculde
Dozeバッテリー効率向上スクリーン非表示時の効率・しばらく触っていない端末は Doze モードへ・ネットワーク不可(優先度設定の高いGCMが来た時はスルー)・Wake locks無視・AlarmManagerのスケジュール無効(setAndAllowWhileIdle(),setAlarmClock()はスルー)・WiFiスキャン無効・sync adapters,JobSchedularによる同期、ジョブも停止
Dozeバッテリー効率向上・しばらく触っていない端末は Doze モードへただし、・充電ケーブルが繋がってる状態・端末を動かしている状態(加速度などで検知)・使っている状態(入力がある状態等)→以上の場合、ノーマルモードへ復帰、ペンディングだったジョブや同期が実行されるつまり、ペンディングから一気に実行されても正しく動作するよう、事前に検証しておくこと
App standbyバッテリー効率向上・しばらく触っていないアプリは idle モードへただし、・ユーザーが自分でそのアプリを起動・フォアグラウンドで動いてるプロセスがある・ロックスクリーンや通知トレイから通知を選択した・ユーザーが設定からそのアプリの設定を変更(設定→アプリ→→電池:「最適化を無視」)→以上の場合、idleではなくなる(復帰する)
App standbyバッテリー効率向上・idle 状態のアプリは充電ケーブルが繋がっていない時・ネットワーク不可・定期ジョブ、同期も停止充電ケーブルが繋がってる時・ネットワークアクセス可・ジョブや同期も可ただし、端末が長い間使われていない場合、idleアプリは1日に一回しかネットワークが使えないという制限がつく
Doze&App standbyバッテリー効率向上Doze・主にスクリーン非表示、バッテリー駆動時のバックグラウンド動作を制限し、知らない間に異常にバッテリーを消費するようなことをなるべく回避するApp stanby・使用頻度の減ったアプリは特に意図がないかぎりその定期動作を制限することでバッテリー消費を防ぐ
アイコン作成:今まではリソースIDを渡す必要があった通知アイコンリソースIDはビルド前にしか生成できないので、アイコンは全パターン事前にresourcesに入れておく必要があった
アイコン作成:直接Bitmapを渡せるようになりました通知アイコン
テキスト範囲選択・範囲選択がより簡単に・選択した近くにアクションが表示される・TextViewだとデフォルト
テキスト範囲選択また、範囲選択されたテキストをアプリで受け取って処理する事も可能に
テキスト整形より凝ったテキスト整形も可能に
任意のWebドメインとアプリの関係性を明確にするApp Links・自社Webサービスと自社アプリが同一の作者(企業)であるという事を明示する事で、サードパーティアプリより優先的な遷移を可能にする詳細ページ(英語)d.android.com/preview/features/app-linking.html
App LinksMのファイナルプレビューまでにはTLSが使えるようになります以下のようなjsonをアプリと関連付けたいドメインに設置する関連付けたいアプリのパッケージ名を明記して、またkeytoolで発行したcertificateを記載しておく
App LinksMのファイナルプレビューまでにはTLSが使えるようになります以下のようなjsonをアプリと関連付けたいドメインに設置するアプリ側は、Manifestに以下、intent-filterやjsonを設置したドメイン名を記載しておく
App Linksapp linksの確立・アプリインストール時にpackage managerがstatement.jsonをwebから取得・そこに記載されているアプリパッケージ名とfingerprintをアプリ側のパッケージ名やcertとマッチして確認する→マッチすれば同一の製作者とみなし、自社アプリに優先権が確立する
App Linksapp linksの確立・app linksを設定しない、もしくはマッチしなかった場合は、今までどおりそのドメインで動作するアプリが複数ある場合はアプリを選択するダイアログが表示される。(ユーザーが選択する)
StylusesICE_CREAM_SANDWICHからサポートMotionEvent APIs:TOOL_TYPE_STYLUSBUTTON_SECONDARYBUTTON_TERTIARYgetPressure(), getSize(), getOrientation(), などただし、有線接続もしくはその端末専用デジタイザのみでした
StylusesBluetooth stylus supportBluetooth stylus 実装の流れBluetooth HID(BLE)経由で筆圧とボタン入力Android Mがこの入力をタッチイベントと融合TOOL_TYPE_STYLUSとして touch streamを取得できるBluetooth stylus は全てのM端末アプリで対応可能
RenderScript(まだ生きてた)RenderScript Compute
CameraNew Torch modeカメラのストロボ(フラッシュ)をカメラから独立して制御可能に※ただし、カメラを制御する方が優先される
MIDIMIDI API以前から利用可能ではあったが…USBから直接制御するため実装は大変でしたandroid.media.midiMidiDeviceManagerMidiInputPortMidiOutputPortMidiDeviceService
ハイレゾ オーディオオーディオサンプル: 単精度浮動小数点FLOAT32(以前は16bit)サンプルレート: 96kHz(以前は44.1 or 48)USB デジタルオーディオ: マルチチャンネル
ART全体的にパフォーマンスは向上さらにRuntime stats(ランタイムで統計とれるようになった)Debug.getRuntimeStat(String)“art.gc.gc-count”“art.gc.gc-time”…gcの発生回数、所要時間など
他・DirectShare・Voice Interactions・Camera Reprocessing APIなどなど
まとめMはブラッシュアップが中心Doze、App stanbyはバックグラウンド動作に影響があるので、事前に入念にテストしておく必要アリApp Links は App Indexing(Deep Link)を含めてwebからアプリへの導線として今後とても重要な機能になり得るので、自分にとってベストな使い方を!
--------ご清聴ありがとうございました!Google Developer Expert安生 真twitter@tennetissGoogle+Makoto Anjo
Next Product