Вопрос по android, android-sdcard, android-sdk-2.1, media-player, android-mediaplayer – Получить путь песни с SD-карты в Android

2

В моем приложении для Android я хочу получить песню с SD-карты, но не могу найти путь к этому конкретному файлу. Я использую Android-API уровня 7, который не поддерживает следующий метод.

Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_MUSIC);

Я также попробовал следующий код:

path = Environment.getExternalStorageDirectory();

но я не знаю, как указать путь к музыкальному файлу. Пожалуйста, предложите какое-нибудь решение. Спасибо.

где находится ваш файл на SDCard? Lalit Poptani
песни следует выбирать из любой папки, доступной в каталоге / sdcard. Zankhna

Ваш Ответ

2   ответа
1

Вы можете отсканировать всю SD-карту для любого формата файла, здесь я использовал для MP3 и MP4.
Вы можете использовать это для любого необходимого формата.

    /** To store the available media files */
    private List<String> mediaList = new ArrayList<String>();

    externalStoragePath = Environment.getExternalStorageDirectory()
                .getAbsolutePath();

        targetDir = new File(externalStoragePath);

        Log.d(" externalStoragePath ::: ", targetDir.getAbsolutePath());
public File[] mediaFiles = targetDir.listFiles();

/**
     * scanFiles
     * 
     * @param scanFiles
     */
    public void scanFiles(File[] scanFiles) {

        if (scanFiles != null) {
            for (File file : scanFiles) {

                if(mediaList.size() > 4){
                    return;
                }

                if (file.isDirectory()) {
                    // Log.d(" scaned File ::isDirectory: ",
                    // file.getAbsolutePath());
                    scanFiles(file.listFiles());

                } else {

                    addToMediaList(file);

                }

            }
        } else {

            Log.d(SCANNER,
                    " *************** No file  is available ***************");

        }
    }



/**
     * 
     * @param file
     */

    private void addToMediaList(File file) {

        if (file != null) {

            String path = file.getAbsolutePath();

            int index = path.lastIndexOf(".");

            String extn = path.substring(index + 1, path.length());

            if (extn.equalsIgnoreCase("mp4") || extn.equalsIgnoreCase("mp3")) {// ||

                Log.d(" scanned File ::: ", file.getAbsolutePath()
                        + "  file.getPath( )  " + file.getPath());// extn.equalsIgnoreCase("mp3"))
                                                                    // {
                Log.d(SCANNER, " ***** above file is added to list ");
                mediaList.add(path);


            }
        }

    }
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);
}
@LalitPoptani Теперь все в порядке?
В следующий раз было бы лучше, если бы вы просто опубликовали понятный и ожидаемый от пользователя ответ вместо полной стены кода.
Могу ли я узнать причину отрицательного голосования, пожалуйста?
стена / кусок кода без объяснения причин.
откуда твой код будет извлекать песни? какая папка?

Похожие вопросы