Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Photo Pickerを触って比較してみた

Photo Pickerを触って比較してみた

DroidKaigi: ランチタイムLT会 Vol.1で発表した内容です。

0c5e92294cc0cfba620641c589db9378?s=128

napplecomputer

February 24, 2022
Tweet

More Decks by napplecomputer

Other Decks in Technology

Transcript

  1. Mobility Technologies Co., Ltd. Photo Pickerを触って比較してみた
 @napplecomputer


  2. Mobility Technologies Co., Ltd. 2 ▪ なっぴー
 ▪ @napplecomputer
 ▪

    株式会社Mobility Technologies所属
 ▪ タクシーアプリGOのユーザーアプリ
 自己紹介

  3. Mobility Technologies Co., Ltd. Photo Picker
 3

  4. Mobility Technologies Co., Ltd. 4 ▪ Android13 DP1と一緒に発表されたAndroid13の新機能のひとつ
 ▪ 画像や動画を選択するUIを表示し、呼び出し元に選択ファイルを渡す


    ▪ Permission不要
 ▪ ユーザーが選択したファイルにはアプリが終了するまでアクセスできる
 ▪ GooglePlayシステムの更新によりAndroid11以降で使えるようになる
 ▪ ただしAndroid Goでは使えないらしい 🙄
 ▪ ユーザーの画像や動画にアクセスするための手段として推奨されている
 Photo Picker

  5. Mobility Technologies Co., Ltd. 5 Photo Picker


  6. Mobility Technologies Co., Ltd. 6 Photo Picker


  7. Mobility Technologies Co., Ltd. 7 ▪ 複数選択可能
 ▪ 複数選択時の上限を設定できる
 ▪

    ローカルに無いGoogle Photosの画像は読み込めない🙄
 ▪ 複数選択できない場合はボトムシートが半分くらいまで上がった状態で表示され る
 ▪ 複数選択できる場合はボトムシートがフルスクリーンになる
 Photo Picker

  8. Mobility Technologies Co., Ltd. 8 val intent = Intent(MediaStore.ACTION_PICK_IMAGES) startActivityForResult(intent,

    REQUEST_CODE) 
 Photo Picker

  9. Mobility Technologies Co., Ltd. 9 val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply {

    putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, 2) } startActivityForResult(intent, REQUEST_CODE)
 Photo Picker

  10. Mobility Technologies Co., Ltd. 10 val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply {

    type = "image/*" } startActivityForResult(intent, REQUEST_CODE)
 Photo Picker

  11. Mobility Technologies Co., Ltd. 11 前からこういうのあったような…?🤔
 Photo Picker


  12. Mobility Technologies Co., Ltd. 既存機能との比較
 12

  13. Mobility Technologies Co., Ltd. 13 ▪ ACTION_PICK
 ▪ ACTION_OPEN_DOCUMENT
 ▪

    ACTION_GET_CONTENT
 たくさんあるよ画像選択Intent

  14. Mobility Technologies Co., Ltd. 14 ▪ 古からあるファイル選択の方法
 ▪ MIME Typeを指定すれば画像だけを選択できる


    ▪ 多くの端末ではギャラリーアプリやGoogle Photosアプリが起動する
 ▪ 挙動はそれぞれのアプリによって異なる
 ▪ ファイルの場所のURIを指定する必要があったが最近は指定しなくても普通に立 ち上がる
 ACTION_PICK

  15. Mobility Technologies Co., Ltd. 15 ACTION_PICK Android13 DP1でのスクショ


  16. Mobility Technologies Co., Ltd. 16 ▪ Android 4.4から使える
 ▪ MIME

    Typeを指定すれば画像だけを選択できる
 ▪ Storage Access Frameworkによるファイル選択
 ▪ ファイルのメタ情報なども取得できる
 ▪ ファイルへのアクセス権限の期間を永続化出来る
 ACTION_OPEN_DOCUMENT

  17. Mobility Technologies Co., Ltd. 17 ACTION_OPEN_DOCUMENT Android13 DP1でのスクショ


  18. Mobility Technologies Co., Ltd. 18 ▪ 古からあるファイル選択の方法
 ▪ MIME Typeを指定すれば画像だけを選択できる


    ▪ OSバージョンや端末に寄って挙動が大きく異る
 ▪ 最近のOSではほぼACTION_OPEN_DOCUMENTとほとんど同じ挙動になる
 ACTION_GET_CONTENT

  19. Mobility Technologies Co., Ltd. 19 ACTION_GET_CONTENT Android13 DP1でのスクショ


  20. Mobility Technologies Co., Ltd. 20 既存機能との比較
 名前 Photo Picker ACTION_OPEN_DOCUMENT

    ACTION_GET_CONTENT ACTION_PICK 使用できるSDK バージョン 30 19 1 1 参照以外の操作 不可能 ファイルによってはメタデータなど を取得できる OSバージョンによって不可能 だったり ACTION_OPEN_DOCUME NTと同じだったり 基本的に不可能 アクセス期間 アプリが終了するま で デフォルトではアプリが終了するま で 永続化可能 OSバージョンによって不可能 だったり ACTION_OPEN_DOCUME NTと同じだったり アプリが終了するま で 複数選択 可能 可能 可能 基本的に可能 Google Photos の写真選択 不可能 不可能? 可能 基本的に可能
  21. Mobility Technologies Co., Ltd. まとめ
 21

  22. Mobility Technologies Co., Ltd. 22 ▪ Photo Pickerが追加されたよ
 ▪ でも既存のACTION_GET_CONTENTが一番多機能で良さそう


    ▪ 今後の更新に期待
 ▪ 個人的にはGoogle Photo連携ほしい
 まとめ