Skip to content

Scoped Storage 対応#480

Merged
TakayukiHoshi1984 merged 14 commits intoDeviceConnect:masterfrom
TakayukiHoshi1984:modify_scoped_storage
Dec 20, 2019
Merged

Scoped Storage 対応#480
TakayukiHoshi1984 merged 14 commits intoDeviceConnect:masterfrom
TakayukiHoshi1984:modify_scoped_storage

Conversation

@TakayukiHoshi1984
Copy link
Copy Markdown
Contributor

概要

Scoped Storage の制限により Android 10 端末上で期待通りに動作しなくなる部分について修正しました。

修正箇所

dConnectDevicePluginSDK

FileProvider に対して external-location が指定された場合の参照先

  Android 9 以前: Environment#getExternalPublicStorage()
  Android 10 以降: Context#getExternalFilesDir(null)

dConnectDemoLib

デモアプリのインストール先の親フォルダ

  Android 9 以前: Environment#getExternalPublicStorage() 内に作成したサブフォルダ
  Android 10 以降: Context#getExternalFilesDir(null)

dConnectManager

Webサーバーのドキュメントルート

  Android 9 以前: Environment#getExternalPublicStorage() 内に作成したサブフォルダ
  Android 10 以降: Context#getExternalFilesDir(null)

dConnectDeviceHost

写真と動画の保存方法

Android 10 以降は、撮影した写真と動画を MediaStore に保存する際、ContentResolver 経由で取得したストリームにデータを書き込みます。

動画サムネイルの保存方法

Android 10 以降は、動画サムネイルの MediaStore への保存が非推奨となるため、Host プラグインのアプリ固有フォルダ内に保存するようにします。
サムネイルを参照したい場合は、動画ファイル名 + .jpg という名前でアクセス可能とします。
(例)example-video.mp4.jpg

dConnectDeviceTheta

写真の保存方法

Android 10 以降は、撮影した写真を MediaStore に保存する際、ContentResolver 経由で保存します。

dConnectDeviceChromeCast

動画の取得方法

MediaPlayer プロファイルで再生する動画を MediaStore から読み込む際、ContentResolver 経由で取得します。

SupportLibraryをAndroidXLibraryに変更
Android 10 以降、MediaStore で共有されるメディアは FileInputStream で直接的に取得することができなくなったため、ContentResolver#openInputStream を経由して取得するように変更した。
@TakayukiHoshi1984 TakayukiHoshi1984 merged commit fa3441b into DeviceConnect:master Dec 20, 2019
@TakayukiHoshi1984 TakayukiHoshi1984 deleted the modify_scoped_storage branch December 20, 2019 01:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants