Pregunta

Estoy trabajando en una aplicación de MP3 en el que me gustaría para indexar los archivos en mi tarjeta SD. ¿Cuál es la mejor manera de hacerlo?

Mi idea . Buscar archivos cuando se inicia la aplicación por primera vez y registrar un receptor de radiodifusión para los intentos de cambio de estado de tarjeta SD y la búsqueda de los archivos cada vez que se emite el intento.

Sin embargo, en este caso la ANR aparecería si mi receptor de radiodifusión no vuelve dentro de los 10 segundos.

Buscando una idea mejor y a prueba de fallos. Gracias.

¿Fue útil?

Solución

De acuerdo con Chris, MediaScanner encuentra música para que, poblando la base de datos MediaStore. Aquí hay un código para buscar una entrada de la música:

        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);

El campo "datos" contiene un mango se puede utilizar con MediaPlayer.

Otros consejos

Para evitar la ANR que tiene que hacer la búsqueda fuera el hilo de interfaz de usuario. Como las tarjetas SD pueden ser grandes, es probable que desee hacerlo en un servicio más que en su actividad de primer plano de modo que el usuario puede utilizar su dispositivo para otras cosas mientras que la búsqueda está en curso.

Sin embargo, Android ya se encuentra e índices de archivos multimedia compatibles, por lo que debe ver si se puede aprovechar la incorporada en MediaScanner cosas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top