tateisu / SubwayTooter

Mastodon client app for Android
Apache License 2.0
234 stars 23 forks source link

添付メディアのダウンロード先の設定 #120

Open motorailgun opened 4 years ago

motorailgun commented 4 years ago

添付メディアのダウンロード先を、現在/sdcard/Downloadに固定されているものを設定にて変更できるようにできませんでしょうか。

tateisu commented 4 years ago

今はダウンロード処理をまるっとDownloadManagerに投げてるだけなんですよね…。 https://developer.android.com/reference/android/app/DownloadManager

オプションで保存先フォルダが指定されてる時だけ自前でダウンロードしてそこに出力するとかしたら出来るだろうけど、動画とかMisskeyとかだと巨大なデータがありうるので、アプリがバックグラウンドになった後の動作制限に対応するため結局DownloadManagerと同等の処理を自前実装しないといけないので、やや高コストだと思います。

motorailgun commented 4 years ago

なるほど。思ったより大変でした…。

tateisu commented 4 years ago

発想をかえて「ダウンロード自体はDownloadManagerに任せる。完了イベントを受け取ったらファイルを移動する」というのも検討してみましょう。あれ、でもファイルの移動に時間がかかる(onReceive内部に収まらない)ならサービスを書くのは一緒だからダウンロード処理だけ節約しても工数かわんないな…?

tateisu commented 4 years ago

https://developer.android.com/reference/android/app/DownloadManager.Request.html#setDestinationUri(android.net.Uri) DownloadManagerに出力先のpathを指定するAPIはあるが、Android Q で増えた制限を見ると出力先にSDカード等は指定できなくなった。