- use SAF on SDK 30+ to give user a change to change the default location where recordings are stored
- since we have requestLegacyExternalStorage="true" in the AndroidManifest, we can enable WRITE_EXTERNAL_STORAGE up to SDK 29 (Android 10)
- modify methods to store recordings in RecorderService to use SAF for SDK 30+ and normal file paths for lower SDK versions.
- at first installation, the app would not have SAF permissions, so we use the old method, using MediaStore and the app's cacheDir until the users decide to change; then we can switch to using SAF
- modify methods to get all recordings in PlayerFragment
- on SDK 30+, we need to combine recordings got from the MediaStore (getMediaStoreRecordings) and the ones from the recordings folder SAF (getSAFRecordings)
- on SDK 29, we combine recordings got from the MediaStore (getMediaStoreRecordings) and the ones from direct file path (getLegacyRecordings)
- on lower SDKs, we just use the file paths (getLegacyRecordings)
- modify method for playing recordings in PlayerFragment
- SDK 30+, when getting recordings with SAF, we store the string of the SAF URI of the file as the Recording#path field, we check if the path is a Document URI and pass that to the MediaPlayer#setDataSource method
- if the Recording#path field is empty, we get the MediaStore URI using the ID and pass that to the MediaPlayer#setDataSource method
- in other cases, the Recording#path field is a file path, so we use it.
- in RecordingsAdapter, add support for changes to the paths used for in sharing the recordings
- update the commons module