2017-01-10 1 views
0

Ich überarbeite eine Android-Musik-Player-App und bin gezwungen, mit MediaStore und ContentResolver auf Musik-Datei-Daten als Folge der allmählichen Schließung des Zugriffs auf das externe Speicher-Dateisystem zuzugreifen.Android MediaStore-Feld für "Position-in-Album"?

Also, ich bevölke die App meiner eigenen Datenbank mit Datensätzen von Android MediaStore Content Provider (während in meiner früheren Version wurde vollständig mit MediaMetadataRetriever ausgefüllt, um die Metadaten direkt aus der Datei zu lesen). So weit, so gut und der MediaStore hat eine ziemlich umfassende Sammlung von Metadatenfeldern. Es scheint eine kritische Ausnahme zu sein, aber vielleicht bin ich blind. Die Ausnahme ist ein Feld, um die Position eines Tracks/Songs in einem Album aufzunehmen. Diese Daten sind normalerweise unter Verwendung von MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER (die selbst ist ein etwas kludgy Proxy, aber funktioniert in den meisten Fällen).

Meine Frage ist also, wo in das Labyrinth der inneren Klassen und Schnittstellen, die die android.provider.MediaStore Metadaten Definition Framework ist das Feld, das entspricht MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER? Oder ist es wirklich abwesend?

Antwort

1

Blick auf die Medien-Datenbank mit einem SQL-Editor, die einzige Referenz, die ich zu einer Spur-Nummer finden kann, ist in einer Ansicht namens Audio.

CREATE VIEW audio as SELECT * FROM audio_meta LEFT OUTER JOIN artists ON audio_meta.artist_id=artists.artist_id LEFT OUTER JOIN albums ON audio_meta.album_id=albums.album_id; 


    MediaStore.Audio.Media.TRACK; 
1

OK Ich habe es gefunden. Es ist:

MediaStore.Audio.AudioColumns.TRACK