Question

Je travaille sur une application MP3 dans lequel je voudrais indexer les fichiers sur mon SDCard. Quelle est la meilleure façon de le faire?

Mon Idée . Rechercher des fichiers lorsque l'application est lancée pour la première fois et enregistrer un récepteur de radiodiffusion pour les intentions de changement d'état de SDCard et rechercher les fichiers à chaque fois que l'intention est diffusé.

Mais dans ce cas, l'ANR apparaîtraient si mon récepteur de radiodiffusion ne retourne pas dans les 10 secondes.

Vous cherchez des meilleurs et des idées failsafe. Merci.

Était-ce utile?

La solution

D'accord avec Chris, MediaScanner trouve la musique pour vous, peuplant la base de données MediaStore. Voici un code pour rechercher une entrée de musique:

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

Le champ « données » contient une poignée que vous pouvez utiliser avec MediaPlayer.

Autres conseils

Pour éviter l'ANR que vous devez faire la recherche en dehors du thread d'interface utilisateur. Comme les cartes SD peuvent être grand, vous voudrez probablement le faire dans un service plutôt que dans votre activité de premier plan afin que l'utilisateur peut utiliser leur appareil pour d'autres choses alors que la recherche est en cours.

Mais Android déjà découvertes et les index pris en charge les fichiers multimédias, de sorte que vous devriez voir si vous pouvez tirer parti de l'intégré des choses MediaScanner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top