android - 如何以编程方式在android中从sdcard中查找mp3文件

标签 android filter mp3

我是 android 编程的新手,所以任何人都可以帮我找到我的 android 设备中的所有 .mp3 文件。

最佳答案

您应该使用 MediaStore。这是我用于类似事情的示例代码:

private static ArrayList<SongModel> LoadSongsFromCard() {
    ArrayList<SongModel> songs = new ArrayList<SongModel>();

    // Filter only mp3s, only those marked by the MediaStore to be music and longer than 1 minute
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"
            + " AND " + MediaStore.Audio.Media.MIME_TYPE + "= 'audio/mpeg'"
            + " AND " + MediaStore.Audio.Media.DURATION + " > 60000";

    final String[] projection = new String[] {
        MediaStore.Audio.Media._ID,             //0
        MediaStore.Audio.Media.TITLE,           //1
        MediaStore.Audio.Media.ARTIST,          //2
        MediaStore.Audio.Media.DATA,            //3
        MediaStore.Audio.Media.DISPLAY_NAME
    };

    final String sortOrder = MediaStore.Audio.AudioColumns.TITLE
            + " COLLATE LOCALIZED ASC";

    Cursor cursor = null;

    try {
        // the uri of the table that we want to query
        Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; //getContentUriForPath("");
        // query the db
        cursor = _context.getContentResolver().query(uri,
                projection, selection, null, sortOrder);
        if (cursor != null) {
            cursor.moveToFirst();                       
            while (!cursor.isAfterLast()) { 
                //if (cursor.getString(3).contains("AwesomePlaylists")) {
                    SongModel GSC = new SongModel();
                    GSC.ID = cursor.getLong(0);
                    GSC.songTitle = cursor.getString(1);
                    GSC.songArtist = cursor.getString(2);
                    GSC.path = cursor.getString(3);

                    // This code assumes genre is stored in the first letter of the song file name
                    String genreCodeString = cursor.getString(4).substring(0, 1);
                    if (!genreCodeString.isEmpty()) {
                        try {
                            GSC.genre = Short.parseShort(genreCodeString);
                        } catch (NumberFormatException ex) {
                            Random r = new Random();
                            GSC.genre = (short) r.nextInt(4);
                        } finally {
                            songs.add(GSC);
                        }
                    }
                //}
                cursor.moveToNext();
            }
        }
    } catch (Exception ex) {

    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }

    return songs;
}

关于android - 如何以编程方式在android中从sdcard中查找mp3文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22323438/

相关文章:

android - 如何在android中制作圆弧

mysql - 可过滤属性未显示在过滤器中

c++ - 使用 opencv 手动应用中值滤波器,与 medianBlur 函数的区别

ffmpeg - 使用ffmpeg将文件夹中的所有mp4音频文件转换为mp3

java - 用 Java 改变我的 Android 应用的整体风格

android - AppCompat PreferenceActivity 在Android 4.4 中左右出现奇怪的padding

java - J2ME Native Mp3 Player - 播放大于 1.5 MB 的 mp3 文件

ios - MP3 vs CAF:在iPhone游戏中使用哪种音频格式产生音效是否重要?

android - 在定义之前请求自定义 android 权限

python-2.7 - pandas:处理值为列表的列