Добавление mp3 в ContentResolver - PullRequest
       3

Добавление mp3 в ContentResolver

3 голосов
/ 17 сентября 2010

Я знаю, что после загрузки mp3 из вашего приложения вам нужно добавить его в ContentResolver, чтобы увидеть его в музыкальном проигрывателе.Я делаю это с помощью следующего кода:

    private void addFileToContentProvider() {
        ContentValues values = new ContentValues(7);

        values.put(Media.DISPLAY_NAME, "display_name");
        values.put(Media.ARTIST, "artist");
        values.put(Media.ALBUM, "album");
        values.put(Media.TITLE, "Title"); 
        values.put(Media.MIME_TYPE, "audio/mp3"); 
        values.put(Media.IS_MUSIC, true);
        values.put(Media.DATA, pathToFile);

        context.getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values); 

    }

Моя проблема в том, что я хочу избежать установки DISPLAY_NAME, ARTIST, ALBUM, TITLE вручную.

Есть ли способ сказать Android сделать это из файла?Я уже использовал только values.put(Media.DATA, pathToFile);, но он не добавляет его в проигрыватель.

Есть ли способ заставить поток, который сканирует SD на наличие музыки?

1 Ответ

6 голосов
/ 19 сентября 2010

Сначала попробуйте добавить это:

values.put(MediaStore.Audio.Media.IS_MUSIC, true);

Тогда попробуйте это:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+path+filename)));

Если это не сработает, попробуйте это:

public MediaScannerConnection mScanner = null;

public void reScan(String filename){
    final String name = filename;
    mScanner = new MediaScannerConnection(THE_NAME_OF_YOUR_ACTIVITY.this, new MediaScannerConnection.MediaScannerConnectionClient() {
        public void onMediaScannerConnected() { 
            mScanner.scanFile(name, null); 
        } 
        public void onScanCompleted(String path, Uri uri) {
            if (path.equals(name)) {
                mScanner.disconnect(); 
            } 
        }
    }); 
    mScanner.connect(); 
}

После добавления mp3 просто вызовите этот метод, который принимает имя файла в качестве ввода.

И обязательно замените THE_NAME_OF_YOUR_ACTIVITY названием своей деятельности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...