LoginSignup
2
1

More than 3 years have passed since last update.

Google Play APP DOJO #38 に参加してきた

Last updated at Posted at 2019-06-17

Google Play APP DOJO #38に参加してきたので、その内容を自分なりにまとめてみました。
テーマは、「Android Q 新機能詳細 -ダークテーマから共有機能まで-」です。

概要

Google I/O 2019で発表されたAndroid関連のアップデートについて

Android Q

YouTubeにプレイリストあり。
Android @ Google I/O 2019
現在、「Android Q Beta 4」が出ている(API Level 29)

プライバシー

Android Q privacy checklist | Android Developers

位置情報

バックグラウンドでの利用権限が分離され、バックグラウンド時には別のパーミッション「ACCESS_BACKGROUND_LOCATION」が必要になる。

Scoped Storage

/sdcard以下へのアクセス制限が以下の通りに変更される。

  • 自分のファイルはアクセスできる
  • 写真・音声・動画はMediaStoreでアクセス
  • 他のアプリが作ったファイルはDocumentsProvider(Intent.ACTION_OPEN_DOCUMENT)でアクセス

位置情報へのアクセスには「ACCESS_MEDIA_LOCATION」権限が必要。
Android R(Qの次のOS)になった時、FileSystemでアクセスできなくなるらしい。

その他の変更

  • バックグラウンドからユーザの操作なしにUI起動できない
  • カメラの情報を取得するのにもカメラの権限が必要
  • バックグラウンドからクリップボードへのアクセス禁止
  • etc

ダークテーマ

システムの設定でダークテーマの切り替えが可能になった。

対応方法

DayNight

values/styles.xml
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
...
</style>

-night

values/styles.xml
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
...
</style>
values-night/styles.xml
<style name="AppTheme" parent="Theme.MaterialComponents">
...
</style>

Force Dark

values/styles.xml
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
    <item name="android:forceDarkAllowed">true</item>
</style>

一部を除外

layout.xml
<xxxView 
    ...
    android:forceDarkAllowed
    ...
/>

注意事項

色をlayout.xml上でベタ書きしていると、ダークモードにしたときにうまくいかないことがあるかもしれない。
colorPrimaryに設定しておけば、テーマの切り替えで対応が可能。

その他

Android Q未満でも、AppCompatを利用すればダークテーマに対応はできる。
だからといって特に対応する必要はない。

Gesture Navigation

Android Qから完全ジェスチャーモードが加わった。
Android R移行時、完全ジェスチャーモードのみになるかも。
とはいえ、DrawerLayoutは無くならないと思われる。
ただ、Gesture Navigationが入った時にどういう挙動になるかは確認したほうがいい。

Bubbles

他のアプリの上に描画する機能。(Facebook Messengerなどで利用されている)
これをSYSTEM_ALERT_WINDOWというが、これを無くしたいがためにBubblesが誕生した。
SYSTEM_ALERT_WINDOWでは、たくさんアプリが起動してしまうため、低スペックのアプリには厳しい。

Android Qでは、ユーザ向けの機能にはならない。
この機能はあくまでPreview Releaseである。
開発オプションの中で有効にすれば使える。

Sharing

マシュマロでDirect Shareができたが、不評であった。
(Direct Shareに関しては以下参照)
Direct Shareを試してみる - Qiita

今回のバージョンアップにより改善された。
Settings Panel(Android Qでしか使えない)を使えばよりGood。

Jetpack 最新情報

以下にバージョン一覧がある。
AndroidX Versions | Android Developers

LiveData(KTX)

Android KTXによって、よりKotlinらしく書くことができる。

LiveData Overview | Android Developers

ViewModel(KTX)

Android KTXによって(ry

ViewModel Overview | Android Developers

DataBinding

Data Binding Library | Android Developers

Android Studio 3.5

  • ビルドが20%高速化
  • XMLとコード間の即時連携
  • インクリメンタルアノテーションプロセッサー(プレビュー)

View Binding(Android Studio 3.6から)

  • DataBindingと同様、ただし値のバインディングはしない
  • findViewByIdの置き換え
  • 型安全、早い

Savedstate

Savedstate | Android Developers

Android 1からある機能。
アクティビティの現在の状態を覚えておくもの。
ViewModelで十分に思えるが、「プロセスが殺されてしまった場合にデータが削除されてしまう」問題があり、それを解消できる。(プロセスが殺されてもデータが保持される)

WorkManager

Schedule tasks with WorkManager | Android Developers

2.2(alpha)

  • パフォーマンス・互換性の向上
  • Robolectric test、Unit test

予定

  • ForegroundでもWorkManager APIが使えるように

Room

Room Persistence Library | Android Developers

2.1(alpha)

  • コルーチン(suspend)
  • 全文検索
  • ビュー(DatabaseView)

予定

  • インクリメンタルアノテーションプロセッサー
  • Relationの強化
  • マイグレーションを簡単に
  • コルーチンChannelとFlow

Paging

Paging library overview | Android Developers

予定

  • ネットワークから取得するのを簡単にする
  • ヘッダー・フッター
  • RxJavaサポート

Navigation

Navigation | Android Developers

2.1(alpha)

  • スコープ
  • URIによるナビゲーション
  • ダイアログフラグメントのサポート

予定

  • Dynamic featureのサポート

CameraX

CameraX の概要 | Android Developers

Camera機能のこれまで

Camera APIは非推奨となり、単純な機能・単純なAPIしかできない。
Camera2 APIで高機能、低水準なAPI(ハードウェアに近い)が用意されたが、マニアックすぎて敷居が高いのがネック。

CameraXとは

カメラを利用するアプリに必要な機能を使いやすいAPIであり、API Level 21まで後方互換性がある。
実行時権限は扱わない。

その他の機能

  • プレビューに対する顔認識
  • Firebaseとの連携
  • Extension Camera2 APIを使って機能を拡張
  • さらに簡単なAPIを目指し中

Benchmark

Benchmark app code | Android Developers

インストゥルメンタルテストの中でベンチマークを取る。
CIでアプリやライブラリのパフォーマンスを継続的に監視したい時に利用。

何をBenchmarkするか

  • ただ単に遅いコードを早くしたいとき
  • 継続的に一定のパフォーマンスを保証したい時

Security

Security | Android Developers

比較的簡単に導入ができる。
EncryptedFileやEncryptedSharedPreferencesがある。
簡単にファイルを暗号化できる。
しかも、暗号化のキーは端末から取り出すことができない。

ぜひ読んで欲しい記事

Google Developers Japan: アプリの品質を改善してGoogle Play で見つけてもらいやすくする

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1