2011-02-03 19 views
2

トラックとアルバム(追加データを含む)用に自分のデータベースを同期しようとしています。私は今までにMediaStoreからアルバムやトラックを引き出しています。MediaStoreのオーディオファイルのジャンルを効率的に取得する

私が正しくすることができないのは、トラックのジャンルを引き出すことです。誰かがコードを投稿できますか?私は、各トラックのデータベースを照会することを避けたいので、可能であれば、関連付けをロードするいくつかのコード(Genre.id < - > Audio.id)は素晴らしいでしょう。

私が苦労しているのは、コンテンツプロバイダーを使用してGenres.Members情報を入手することです。

答えて

2

私はringdroidの優れたクリエイターがこれをどのように行うのかを見ていきたいと思います。 http://ringdroid.googlecode.com/svn-history/r37/trunk/src/com/ringdroid/SongMetadataReader.java

基本的には、ジャンル名とIDを取得し、それらのジャンルに一致する曲のみを取得するcontent_uriを簡単に作成できるようにすることから始めます。 しかし、もし私があなただったら、id3タグにGenreの名前が含まれていないファイルの「未知」または「空」のジャンルがあるかどうかを確認します

+0

ありがとう、私はそのリンクを見つけましたが、私が望むものは、ジャンルを取得するために各曲の要求を避けることですので、それはむしろ非効率です。だから私はすべての関連(audio_id、genre_id)のリストを取得する必要があります(可能な場合は、それらのHashMapをキャッシュできるように、1つのaudio_id(例えば最初の1つ)あたり1にgenre_idの数を制限します。 –

+0

これは実際に各曲を要求しません。むしろジャンルごとのリクエスト。だからもしあなたが2つのジャンル{rock、classic}を持っていれば、わずか2つのdbリクエスト(クエリ)が作られます。 – ingo

+0

よろしくお願いします。 –

0

これで、すべてのオーディオファイルローダーと、次のクエリでSDに:彼らは.MP3で終わると私はその後、jaudiotaggerを使用し、ジャンルのためIDE3タグを読み取る場合

 loader = new CursorLoader(mActivity, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
       new String[] {Audio.Media._ID, Audio.Media.DATA}, 
       null, null, null); 

それから私は確認してください。

関連する問題