Domanda

Sto lavorando su un'applicazione MP3 in cui mi piacerebbe per indicizzare i file sul mio SDCard. Qual è il modo migliore per farlo?

La mia Idea . Cerca i file quando l'applicazione viene avviata per la prima volta e registrare un ricevitore di broadcast per gli effetti di modifica dello stato SDCard e cercare i file ogni volta che l'intento viene trasmesso.

Ma in questo caso l'ANR rivelerebbe se il mio ricevitore di broadcast non viene restituita entro 10 secondi.

Alla ricerca di idee migliori e fail-safe. Grazie.

È stato utile?

Soluzione

Sono d'accordo con Chris, MediaScanner trova musica per voi, il popolamento del database MediaStore. Ecco po 'di codice per cercare una voce di musica:

        final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        final String[] cursor_cols = {
                MediaStore.Audio.Media._ID,
                MediaStore.Audio.Media.ARTIST,
                MediaStore.Audio.Media.ALBUM,
                MediaStore.Audio.Media.TITLE,
        };
        final String where = MediaStore.Audio.Media.IS_MUSIC + "=1";
        final Cursor cursor = getContentResolver().query(uri, cursor_cols, where, null, null);
        cursor.moveToNext();
        final String artist = cursor.getString(_cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
        final String album = cursor.getString(_cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
        final String track = cursor.getString(_cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
        doSomethingInteresting(artist, album, track);

Il campo "Dati" contiene una maniglia è possibile utilizzare con MediaPlayer.

Altri suggerimenti

Per evitare l'ANR è necessario fare la ricerca al di fuori del thread dell'interfaccia utente. Come le schede SD possono essere grandi, probabilmente avrete bisogno di farlo in un servizio piuttosto che nella sua attività di primo piano in modo che l'utente può utilizzare il proprio dispositivo per altre cose, mentre la ricerca è in corso.

ma Android già reperti e gli indici supportati i file multimediali, così si dovrebbe vedere se è possibile sfruttare il built-in MediaScanner roba.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top