Android Q で 画面録画機能は利用できるのか。Can we use Screen Recording on Android Q stable release?

beta1 のころは設定画面から「設定を有効化」することで可能でしたが、Screen Recording。

👉 【Android Q】 端末画面動画 (screenrecord) が簡単に録画録音できるのよ、アプリ不要! 

beta5 となった今では、設定画面から有効化する項目一覧が表示されません。

adb コマンドにて有効化します。


~ $ adb shell settings put global settings_screenrecord_long_press true
~ $ adb shell settings get global settings_screenrecord_long_press
true

録画スタートから順調に進んでいきますが、録画停止したあとに、

うまく保存できないようです。



Android Q 安定版リリース時には、利用できるようになってくれたらいいな。

👉 Android Q beta gets a screen recorder, how to access it - 9to5Google 
👉 サポートが切れた Pixel に Android 10 相当の Lineage OS 17 を 
👉 Android標準リカバリ「Android Recovery」を使う方法 


Android-Q beta5 ジェスチャーナビゲーション【動画有り】

賛否両論あるようですが。



薄いボタンが一つとなります。

Android OSでは画面下部にあるナビゲーションバーが担当している操作は以下の5つ。

1. アプリドローワーを引き出す
2. ホームの表示
3. アプリ切り換え
4. アシスタント起動
5. 戻る

これら5つの操作を1つの薄いボタンでどう操作するのでしょうか。

1. アプリドローワーを開く

ボタンを上へ長くスワイプ。

これまでと同じです。
直感的に使えます。

2. ホームの表示

ボタンを上へ長くスワイプ。

「1. アプリドローワーを開く」時の操作と同じですが、ホーム画面以外から使うことで区別できます。

3. アプリ切り換え

ボタンを上へ短くスワイプ。

アプリ切り換え画面が表示されます。

または、
ボタンを左右にスワイプで直接切り換えることもできます。

4. アシスタント起動

画面左右下隅を中央に向けてスワイプします。

5. 戻る

画面左右端を中央に向けてスワイプします。

スワイプ前に、一度ホールドすると、アプリ内のナビゲーションメニューとの操作の衝突は避けれる。

まとめ?

まだ、慣れていないためか、イライラ→絶叫してしまいます(泣)


この操作の1ボタンのジェスチャーナビゲーションを、デフォルト設定として、Qは正式リリースとなるか?

ならないよなあ。


Android Paging Library と Retrofit

例えば、このパターン、Network only。

ここでは、PositionalDataSource を拡張するが、他のタイプのDataSource拡張でも同じ。

compositeDisposable のように viewModelScope をはるばる持ってきたにもかかわらず、


class RemoteDataSource(
  private val coroutineScope: CoroutineScope,
  private val service: RemoteService,
  private val s: String
) : PositionalDataSource<Item>() {

  @ExperimentalCoroutinesApi
  override fun loadInitial(params: LoadInitialParams, callback: LoadInitialCallback<Item>) {
    Timber.d("RemoteDataSource#loadInitial: ${Thread.currentThread().name}")
    ...

loadInitial() 内は、メインスレッドではなく、別スレッドで実行されている。


Timber.d("RemoteDataSource#loadInitial: ${Thread.currentThread().name}")


D/RemoteDataSource: RemoteDataSource#loadInitial: arch_disk_io_0
D/RemoteDataSource: RemoteDataSource#loadInitial: arch_disk_io_1
D/RemoteDataSource: RemoteDataSource#loadInitial: arch_disk_io_3

これらは、Android Architecture Component が作成した独自スレッド。

よって、同期なRetrofitの実行処理で良い、となる。

If I use enqueue with Retrofit 2.3 it will doesn't work but if i do a .execute() the LiveData is correctly triggered

Retrofit 2.3で、enqueue() を使用しても機能しませんが、execute() を実行するとLiveDataが正しくトリガーされます。

Android Paging Library LiveData> is triggered before the end of the api call

公式リファレンスにも記述はあるという。

To display data from a backend server, use the synchronous version of the Retrofit API to load information into your own custom DataSource object.

バックエンドサーバーからのデータを表示するには、同期バージョンのRetrofit APIを使用して、独自のカスタムDataSourceオブジェクトに情報をロードします。

Network only - Paging library overview

しかし、DiffUtilを使ったリフレッシュなアニメーションが実行されない。

「手間がかかる」でなく「沼にハマる」ことが最近は多くなった。

APIの仕様がおせっかいすぎやしないか。

しきいを下げようとして、余計に混乱させるばかり。

👉 あなたは Android Architecture Component をどう思いますか? 
👉 Fragment と Toolbar の歴史の話 - Qiita