1

Android用の音楽プレーヤーを実装しており、検索機能を実装したいと考えています。検索では、アルバム、アーティスト、およびタイトルを探す必要があり、それらを別の方法で表示したいと考えています。また、たとえばアーティストとタイトルが見つかった場合、ユーザーが 1 つの項目をクリックすると、アプリは適切に反応できるはずです (アーティスト = 彼のすべての曲を表示、タイトル = 曲を再生)。

MediaStore プロバイダー ( http://developer.android.com/reference/android/provider/MediaStore.Audio.Media.html ) があることは承知していますが、これよりも多くの機能が必要なようです。このようなクエリを実行すると、アーティストまたはタイトルが一致したかどうかはわかりません。

String[] projection = {
    BaseColumns._ID,   
    MediaStore.Audio.Media.MIME_TYPE, 
    MediaStore.Audio.Artists.ARTIST,
    MediaStore.Audio.Albums.ALBUM,
    MediaStore.Audio.Media.TITLE,
};

Cursor c = getContentResolver().query(
    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
    projection, MediaStore.Audio.Media.TITLE + " 
    LIKE "+ "'%"+query+"%' OR " + MediaStore.Audio.Media.ARTIST  + " 
    LIKE "+ "'%"+query+"%'", null, MediaStore.Audio.Media.TITLE);

私は今、中央のアンドロイド音楽データベースに基づいてインデックスを作成することを考えていますが、これが可能かどうかはわかりません.

たぶん、これには簡単な解決策がありますか、それともすでにこのようなものを実装している人はいますか?

4

1 に答える 1

3

私は自分で解決策を見つけました。どこにも文書化されていないように見えますが、実際には Android システムによって提供される音楽検索テーブルがあります。とにかく誰かが同じ問題を抱えている場合は、この Uri を試してください: content://media/external/audio/search/fancy/

ところで:このソースコードでURIを見つけました:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.2.2_r1/com/android/music/ QueryBrowserActivity.java

于 2013-04-24T19:33:36.303 に答える