android - Android ContentResolver 正在从选择中返回具有不同 mime 类型的文件
问题描述
我希望能够使用 MediaPlayer 从 Android 10 Samsung A12 播放 mkv、flac 和 aac 文件。
我已经可以使用带有以下代码的 Android 9 Moto E6 执行此操作。
val projection = arrayOf(
MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.IS_MUSIC, MediaStore.Audio.Media.ARTIST_ID,
MediaStore.Audio.Media.TITLE)
val selection = MediaStore.Audio.Media.IS_MUSIC + " != ?"
val selectionArgs = arrayOf("0")
val sortOrder = MediaStore.Audio.Media.TITLE + " ASC"
context.contentResolver.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection, selection, selectionArgs, sortOrder).use { ... }
这仅返回Android 10 Samsung A12上的mp3文件,所以我尝试了以下直接获取指定的文件类型。
val contentResolver: ContentResolver = activityMain.contentResolver
val selection: String = DocumentsContract.Document.COLUMN_MIME_TYPE + " == ?" +
" OR " + DocumentsContract.Document.COLUMN_MIME_TYPE + " == ?" +
" OR " + DocumentsContract.Document.COLUMN_MIME_TYPE + " == ?" +
" OR " + DocumentsContract.Document.COLUMN_MIME_TYPE + " == ?"
val selectionArgs = arrayOf(
DocumentsContract.Document.MIME_TYPE_DIR,
MimeTypeMap.getSingleton().getMimeTypeFromExtension ("mkv"),
MimeTypeMap.getSingleton().getMimeTypeFromExtension ("flac"),
MimeTypeMap.getSingleton().getMimeTypeFromExtension ("aac"),
)
contentResolver.query(childrenUri, arrayOf<String?>(
DocumentsContract.Document.COLUMN_DOCUMENT_ID,
DocumentsContract.Document.COLUMN_MIME_TYPE,
),
selection, selectionArgs, null).use { ... }
此代码仅返回带有音频/mpeg 的 mime 类型。我评估了上述扩展 mkv、flac 和 aac 的 mime 类型,但没有一个指定 mime 类型。
我也试过
val projection = arrayOf(
MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.ARTIST_ID, MediaStore.Audio.Media.TITLE)
val selection = MediaStore.Audio.Media.IS_ALARM + " == ?" + " AND " +
MediaStore.Audio.Media.IS_NOTIFICATION + "== ?" + "AND " +
MediaStore.Audio.Media.IS_RINGTONE + "== ?"
val selectionArgs = arrayOf("0", "0", "0")
val sortOrder = MediaStore.Audio.Media.TITLE + " ASC"
context.contentResolver.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection, selection, selectionArgs, sortOrder).use {
而且只有mp3...
我认为通过文档合同的 mime 类型肯定会起作用,因为它根本不涉及媒体存储,所以我不确定接下来要尝试什么。
解决方案
推荐阅读
- git - 如何将 gitlab 上的分支放入 github?
- c - 从键盘输入填充动态数组的问题[C]
- javascript - 使用 Tampermonkey 增加/减少在按键上显示在网站上的数字
- excel - Excel 公式:如果在 B 列中发现重复,则在 D 列中添加“Y”值
- python - 在 Python 中,何时/为什么应该返回一个函数?
- sql-server - 条件未合并的 SQL Server MERGE
- amazon-web-services - Lambda ==> RDS ==> QuickSight
- ios - 如何将 customView 加载到 viewForHeaderInSection 中,然后按内容加载调整大小?
- python - 使用温度的条件语句
- customization - Epicor 10 如何将用户 ID 添加到报价条目?