在android中获取SD卡的歌曲路径

Zan*_*hna 2 android media-player android-sdk-2.1 android-sdcard android-mediaplayer

在我的Android应用程序中,我想从SD卡获取歌曲,但我无法获得该特定文件的路径.我使用的是android api level 7,它不支持以下方法.

Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_MUSIC);
Run Code Online (Sandbox Code Playgroud)

我也试过以下代码:

path = Environment.getExternalStorageDirectory();
Run Code Online (Sandbox Code Playgroud)

但我不知道如何指定音乐文件的路径.请提出一些解决方案.谢谢.

Chi*_*rag 7

从SD卡获取路径和歌曲名称.您可以从MediaStore中找到该歌曲的路径.

媒体提供程序包含内部和外部存储设备上所有可用媒体的元数据.

private String[] STAR = { "*" };

public void ListAllSongs() 
    { 
        Cursor cursor;
        Uri allsongsuri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";

        if (isSdPresent()) {
            cursor = getContentResolver().query(allsongsuri, STAR, selection, null, null);

            if (cursor != null) {
                if (cursor.moveToFirst()) {
                    do {
                        String songname = cursor
                                .getString(cursor
                                        .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
                        int song_id = cursor.getInt(cursor
                                .getColumnIndex(MediaStore.Audio.Media._ID));

                        String fullpath = cursor.getString(cursor
                                .getColumnIndex(MediaStore.Audio.Media.DATA));

                        String albumname = cursor.getString(cursor
                                .getColumnIndex(MediaStore.Audio.Media.ALBUM));

                    } while (cursor.moveToNext());
                }
                cursor.close();
            }
        }
    }


public static boolean isSdPresent() 
{
    return android.os.Environment.getExternalStorageState().equals(
                android.os.Environment.MEDIA_MOUNTED);
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您只是发布用户期望的清晰和回答而不是完整的代码墙,那么下次我会更好. (2认同)