要在Android 10/Q上使用MediaStore和MediaPlayer.playFromUri,您可以按照以下步骤进行操作:
private Uri getMediaUri() {
ContentResolver resolver = getContentResolver();
// 查询媒体文件
Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String[] projection = { MediaStore.Video.Media._ID };
String selection = MediaStore.Video.Media.DISPLAY_NAME + "=?";
String[] selectionArgs = { "your_video_file_name.mp4" }; // 替换为您的视频文件名
String sortOrder = null;
Cursor cursor = resolver.query(uri, projection, selection, selectionArgs, sortOrder);
Uri mediaUri = null;
if (cursor != null && cursor.moveToFirst()) {
int idColumn = cursor.getColumnIndex(MediaStore.Video.Media._ID);
long id = cursor.getLong(idColumn);
mediaUri = Uri.withAppendedPath(uri, String.valueOf(id));
}
if (cursor != null) {
cursor.close();
}
return mediaUri;
}
private void playMediaFromUri(Uri mediaUri) {
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(getApplicationContext(), mediaUri);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
// 处理异常
}
}
Uri mediaUri = getMediaUri();
if (mediaUri != null) {
playMediaFromUri(mediaUri);
}
请注意,上述代码示例中的"your_video_file_name.mp4"应替换为您的视频文件名,并且您需要处理异常情况。此外,还可以根据需要更改媒体文件的查询条件和投影。