Google I/O 2016 行ってきましたよ (Android N編)

幸いなことに、Google I/O 2016へ行ってきましたよ。

というわけで、まずは、Android Nについてから。

![IMG_3579.JPG](https://qiita-image-store.s3.amazonaws.com/0/100425/247072a8-9744-6cea-a2a7-732c892ba7a7.jpeg)

これを目OCRして、これまでN developer previewの説明でされていなかった案件を太文字にしてみました。

* UX
 * Android Beta Program
 * Multi-window
   * Freeform mode
   * Picture-in-picture mode
   * Split screen mode
 * **VR mode** (これは発表のあったDayDreamです)
 * Quick Switch Display size
 * Notification
   * Bundled notifications
   * Direct reply
   * New language supported improved notifications
   * Notification controls
 * Quick Settings
   * Customizable quick settings
   * Quick Setting tile API
   * Quick Settings bar
 * **Clear all in overview settings** (会場でもわーっと声が上がりました)
 * **Lock Screen wallpaper support** (デバイスによっては独自にサポートされていましたね)
 * Navigation drawer
 * Settings suggestions
 * New language supported
 * ICU4J API
 * Unicode 9 Emoji
 * Variable text to speech speed improvements
 * Accessibility
   * Accessibility mono output
   * Accessibility settings in setup
   * Accessibility support for creating touch event

* System
 * Java8 language support
 * JIT Compiler
 * Improved Doze / job scheduler
 * **Renderscript reduced** (あまり中身には触れられていませんね。でもみんな使っているのかな？)
 * Vulkan API
 * Better multi tasking
 * Project Svelte
 * Scoped folder access
 * **Improved backup coverage** (これも詳細不明でした)
 * **Seamless software updates (A/B updates)** (AOSPでも[A/B update](http://qiita.com/hidenorly/items/f6b279ebdf2cdeb72ac5)のコード入っていますね。これは次の面の作成を通常動作時に行う?)
 * Sensor Hub improvements
 * **Camera memory foot print improvements** ([CDD](http://source.android.com/compatibility/6.0/android-6.0-cdd.html#7_5_cameras)に記載されている3画像保持可能にせよの話?)

* Security
 * Security hardening
 * File based Encryption
 * Direct boot

* Connectivity
 * Data saver
 * Telephony
   * Number blocked telephony
   * Video telephony
   * Visual voicemail improvements
   * Emergency information


# UX関係

##  Android Beta Program

N developer previewから始まったbeta programのことで、
https://www.google.com/android/beta
から、利用するGoogle accountでログインして、
端末を選択すると、OTAとしてN developer previewを既存のデバイスに振らせることができ、
いわゆる、adb reboot-bootloader; fastbootで焼く必要が無いというものです。楽です。

## Multi-window

* Freeform mode
* Picture-in-picture mode
* Split screen mode

これはだいぶ既に語られています。

* [Android N で注意すること その3 (Multi Window その1)](http://qiita.com/hidenorly/items/456b4dd725875b776d9a)
* [Android N で注意すること その4 (Multi Window その2)](http://qiita.com/hidenorly/items/72a659438126a8457715)

これらのご参照ください。


## DayDream

VR modeのことをDayDreamといいます。

* 20msec以内のlow latencyだ（VR酔が軽減されるはず）
　　* single buffer renderingで対応していると話あり

* Day Dreamを今楽しむ方法
    * Cardboardを用意します (互換品の場合は、Nexus 6P対応の大きさのものを使うこと)
    * Android N Developer Preview3以降を焼いたNexus 6Pを用意します (これいがい非対応)
        *　https://developers.google.com/vr/concepts/daydream-hardware#the_headset_and_controller 
    * 新し目の端末を用意します ([HiFi sensor](https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_HIFI_SENSORS)が利用できたほうが良いでしょう) (DayDream Controllerとして利用します.)
    * https://developers.google.com/vr/concepts/dev-kit-setup#hardware
    に従って楽しみます。
    * 結構手順が面倒です

 

* 開発する方法
 * https://developers.google.com/vr/android/ からGoogle VR SDKをdownloadします
 * N developer previewのAPIについて
        * https://developer.android.com/preview/api-overview.html#vr

## Quick Switch Display size

* これまであったaccessibilityでの文字フォントだけでなく、画像リソース選択まで変更するものです。
* ようは端末のdensityごとにmdpiとかhdpi, xhdpi, xxhdpiとかが選択されていて変わることがありませんでしたが、これが変わるようになるということです。
    * resourceをdownloadして動くようなアプリでは、その単位が変わってしまうことになるので注意が必要です。
    * ふつうにonConfigurationChangeが飛んでくるのでそれをhandleされるか、killされるのでそれで変わった状態で呼び出されるか、です。


## Clear all in overview settings

System UIからoverview buttonで、recentのアプリを出して、これまでAOSP端末では、スワイプして１つのアプリごとに消していましたが、AOSPでも、各社が既にやっていましたがclear allで一気に全アプリを消せるようになりました。

# System

## JIT Compiler

前々からARTにJITの再投入の話はあったのですが、Nで再投入されました、の話です。
JIT(Just-in-Time)になるので、完全なるAOT(Ahead-of-Time) compilationではなくなり、install時にコンパイルする必要がなくなるので、install時間が75%も短縮になりますよ！という話でした。

## Improved Doze / job scheduler

これまで、stationaryじゃないと、Doze発動しませんでしたが、これからは、歩行中のような歩いているsituationでも、すぐに発動しますよ！という話だそうです、

## Renderscript reduced

あまり中身には触れられていませんね。でもそもそもみんな使っているのかな？

## Vulkan API

Khronousの新Graphics APIです。
より低レベルでハードウェアに近い操作が可能になります。
glSyncの問題とかをより発動しないようにするために自前で制御できるようになるというもののようです。

ただ、普通に使うにはより面倒に。初期化がOpenGLよりもさらに面倒になりました、の話だそうで。。。

## Better multi tasking

Multi Windowだから、ということのようです。


## Project Svelte

CONNECTIVITY_CHANGE, NEW_PICTURE, NEW_VIDEOを、AndroidManifest.xmlに書いておいてhandleされるようにするのはできなくなるよ、ということだそうです。

## Scoped folder access

Runtime permissionで外部ストレージ全体へのアクセス権の把握のようになっていて、顧客の観点では気持ち悪かったかもしれないけど、それを自分のアプリはPHOTOのフォルダーだけだとか宣言できるので、顧客への説明の観点で良いでしょう？という話だそうです。

## Seamless software updates (A/B updates)

* [A/B update](http://qiita.com/hidenorly/items/f6b279ebdf2cdeb72ac5)
をご参照ください。

A面・B面の/system partitionを用意しておいて、それにより２重化されるのでbrickになりにくいだけでなく、さらにすすめて、B面を普通に動作している間に作成するので、updateにかかる時間がほぼ０ということです。（正確には再起動分)。


## Camera memory foot print improvements

これなんですかね？

footprintって、ハードでは物理的なサイズか、ソフトではROM/RAMの利用量の話のですが、普通、RAMのアプリからみた利用量は、画像サイズとフォーマットから決まるので、変わらないはずです。圧縮formatがサポートされる？

もしくは、[CDD](http://source.android.com/compatibility/6.0/android-6.0-cdd.html#7_5_cameras)に記載されている3画像保持可能にできる話のこと？

> If a device implementation includes at least one camera, it SHOULD be possible for an application to simultaneously allocate 3 bitmaps equal to the size of the images produced by the largest-resolution camera sensor on the device.

ですかね？

まずはこんな感じで。