Android编程 - 制作URI以获取音频位置

Joh*_*own 7 java android uri

我是Java和Android编程的新手,所以对我来说有点奇怪!我主要来自C++/C#的背景,所以说技术!

无论如何.

我正在尝试创建一个简单的类来处理我正在设计的自定义音乐播放器的音频.我已经处理了所有的按键事件,所以现在我正在处理这个功能.

我正在使用MediaPlayer该类处理大部分硬件,但我对如何访问保存在用户移动设备上的音频感到困惑.

我一直在做一些研究,显然Android设备有一个内置的数据库,管理所有音频的位置,并访问这些数据,我必须使用Uri

如果有人可以发布一些如何使用a Uri访问它的代码示例,那么我相信我将能够在此基础上构建,然后将数据添加到我想要的任何容器中.

只是为了说清楚 - 用户不知道音乐位置目录,而我没有制作原始文件夹,我希望能够访问用户设备上保存的所有音乐,然后软件可以播放它.

或者,如果失败,一个很好的教程...我看了谷歌提供的文档,但没有任何示例代码,所以我真的不知道从哪里开始!

谢谢大家.

Lit*_*irl 4

以下是如何使用 Uri 访问音频文件的示例,此代码在用户设备上搜索歌曲并将详细信息存储在songsList.

ArrayList<HashMap<String, String>> songsList = new ArrayList<>();
String[] STAR = {"*"};

Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
Cursor cursor = managedQuery(uri, STAR, selection, null, null);

if (cursor != null) {
    if (cursor.moveToFirst()) {
        do {
            String songName = cursor.getString(cursor.
                    getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
            String path = cursor.getString(cursor
                    .getColumnIndex(MediaStore.Audio.Media.DATA));
            String albumName = cursor.getString(cursor
                    .getColumnIndex(MediaStore.Audio.Media.ALBUM));
            int albumId = cursor.getInt(cursor
                    .getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));

            HashMap<String, String> song = new HashMap<String, String>();
            song.put("songTitle", albumName + " " + songName + "___" + albumId);
            song.put("songPath", path);
            songsList.add(song);
        } while (cursor.moveToNext());
    }
}
Run Code Online (Sandbox Code Playgroud)