ディスプレイ名が重なるように折りたたむ。ディスプレイが外側になるように折りたたむ。Xがこちら(出るのかなこれ。inはディスプレイが3枚分あるの??Androidはこの折りたたみをサポートする。折りたたんでいるときは、通常の電話と同じような体験に。広げたときはウィンドウを2つ並べてマルチタスクとしても使える。サポートするスクリーンのアスペクト比を制限することができる。最低でも2インチあることが保証されるように。下ナビゲーションにアイコン5つギリ入る幅。折りたたんだり、元に戻したりしたとき、ユーザーの状態をロストしないようにしよう。みたいなのは悪い体験。configurationの変更として扱われるので、画面回転と同じようなものとして捉えればOK。しても、configurationの変更でサイズを変更しなければならない場面がある点に注意。このフラグはアクティビティがマルチウィンドウやマルチディスプレイ環境に対応してるかだけを表すフラグ。modeが用意されている。この場合、折りたたみ環境で広げた状態ではiPadのように真ん中に縦長のアクティビティが表示される。Qではマルチレジュームという機能が導入される。これはマルチウィンドウの状態で、複数のアプリがRESUMED状態(=ユーザーからの操作を受け付ける状態)になること。modeとか)になったマルチレジュームで考えないといけないのは、排他的に使うべきリソースにアクセスする場合。複数のアプリ間で同時に使うことはできないので、ちゃんとdisconnectのイベントを処理し、使えるようになったら再接続するような実装が必要。動画ではカメラアプリを同時に3つ起動する例が示されている。しても、カメラへのアクセスが保証されるわけではないので注意。渡されたらカメラとかへのアクセス権がもらえている。ドラッグ&ドロップも考える必要がある。機能自体はNぐらいから導入されてるのと同じ(Nだったかは要調査)。1Passwordの例。リサイズに対応し、ドラッグ&ドロップ(持ち出す方)に対応。アプリから離れるとロックする機能をいれていたが、リサイズするたびにロックされてしまうという問題に直面した。アクティビティのライフサイクルに対する理解を改め、なんとかしたっぽい。続いてGameloftの例。unknownというのをつくり、あらゆる仮定(スクリーンサイズやピクセル密度など)を排除して考えてみた。エディタは画面の要素をアンカーベースで配置してもらい、いつ画面のサイズが変わっても大丈夫なようにしてもらった。マルチディスプレイアクティビティを別のディスプレイに持っていったとき、コンテキストも変わってしまう。アクティビティコンテキストは、今表示されているディスプレイの情報がとれる。逆にアプリケーションコンテキストでディスプレイの情報と取ってしまうと、意図しない情報がとれたりする。トーストの表示も、アクティビティコンテキストの影響を受ける。引数で渡したアクティビティが表示されている側にトーストが表示されるようになっている。configurationの変更イベントの中には、「タッチ可能の有無が変更された」などもある。スマホの画面にいたアクティビティが、外付けのディスプレイに移動したときなど。経由で各ディスプレイの情報がとれる。オプションに、どのディスプレイで起動するかを渡すことができる。ディスプレイによってはアクティビティの起動が禁止されているものもある。Qでは、そのディスプレイで起動可能かをチェックするためのAPIが追加されている。セカンドディスプレイにソフトキーボードを表示することもできる。その場合、キーボードもディスプレイ間を移動することになる。壁紙もディスプレイ毎に用意できる。テストについてこんな変態的な環境を用意するのはたいへん。エミュレーターで折りたたみがサポート。7.3インチと8インチを現時点で用意している。将来的にはもっと増えるみたい。端末にHDMI出力があれば、マルチディスプレイで動作させることもできる。2019現地で聞いてないセッション。「位置情報に関する更新はだいじ!」と何名から言われたので早めに確認します。位置情報データに対するアクセスコントロールを提供。Qより前は、ユーザーは位置情報に関して「許可」「禁止」の2つしか選べなかった。許可した場合、アプリ使用中/バックグラウンドに関わらず、位置情報が取得できた。そのため、Qでは「このアプリ使用中にのみ位置情報の取得を許可する」が追加された。パーミッション追加が必要。フォアグラウンドでしか取得できない。これをオプトアウトする術はない。許可を得る際、「このアプリ使用中のみ取得」「拒否」の2択ダイアログが出せる(「常に取得」を非表示にできる)。インクリメンタルに許可をとることもできる。鉄道のアプリで、ユーザーがアプリを起動中に近くの駅の情報を出すといった機能があった場合、「アプリ使用中のみ位置情報を取得する」のダイアログを表示することができる。ユーザーがバックグラウンドにいるときも運行情報を取得したいとしたときにはじめて「常に位置情報を使用」まで含めたダイアログを表示。その際、「アプリは現在、使用中のみ位置情報にアクセスできます」と表示される。ユーザーは設定でいつでも「常に許可」「アプリ使用中のみ許可」の変更ができる。アプリ開発者はQでのテストを早めに行ってほしい。ユーザーがPからQにアップグレードした場合は?Pで許可していた場合、Qでは「常に許可」としてアップグレードされる。バックグラウンドでの位置情報もとれる。フォアグラウンドサービスユーザーが、ユーザーの意思で位置情報を取得し続けてほしい(ホームボタンでアプリが中断されても)場合、それはフォアグラウンドサービスとして実装されるべき。この権限をつけ忘れ、ユーザーが「アプリ使用中」の設定にした場合、位置情報は取得できない。通知について位置情報の使用を許可したアプリで、ユーザーが長期間使用していない場合、システムが通知欄に「このアプリは位置情報を取得しつづけてるよ」の通知を出す。ユーザーはこの通知をタップすると、位置情報の許可レベル設定画面が表示される。APIQ以前は、WifiのスキャンAPIと接続APIがあった。スキャンできるということは、そこからだいたいの位置が特定できてしまう。位置情報のパーミッションが必要だった。ユーザーにとって、「なんでWifiに繋ぐだけなのに位置情報を取得するの?」と混乱の元となっていた。この問題を解決するため、Qでは次の2つのAPIが追加された。NetworkSpecifyこれらを使うと、アプリは近くのWifi情報にアクセスできなくなるので位置情報のパーミッションが不要になる。パーミッションが必要になる。SSIDやパスワードの指定も可能。あとはユーザーが指定したWifiの領域内に入ったら、システムが通知で「このネットワークに繋ぐ?」と出してくれる。その際、「このアプリが提案してるよ」と出してくれる。つけると、接続後にアプリにブロードキャストが投げられる。