カーソルを設定しましたが、実際に検索するのにまだ苦労しています。トラック名を検索するにはどうすればよいですか? ID を取得して mediaplayer に渡すにはどうすればよいですか? 私はさまざまなことを試みましたが、成功しませんでした。
基本的に、メディアストアで特定の文字列 (この場合は songToPlay という文字列) を検索し、結果を取得し、最適な一致の ID を取得し、それをメディア プレーヤー サービスに渡してバックグラウンドで再生する方法を知りたいと考えています。私があなたに尋ねている唯一のことは、IDを取得する方法です.
これは私が使用しているコードです:
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] songToPlay = value.split("play song");
String[] searchWords = songToPlay[1].split(" ");
String [] keywords = null;
StringBuilder where = new StringBuilder();
where.append(MediaStore.Audio.Media.TITLE + " != ''");
String selection = where.toString();
String[] projection = {
BaseColumns._ID,
MediaStore.Audio.Media.MIME_TYPE,
MediaStore.Audio.Artists.ARTIST,
MediaStore.Audio.Albums.ALBUM,
MediaStore.Audio.Media.TITLE
};
for (int i = 0; i < searchWords.length; i++) {
keywords[i] = '%' + MediaStore.Audio.keyFor(searchWords[i]) + '%';
}
Cursor cursor = this.managedQuery(uri, projection, selection, keywords, MediaStore.Audio.Media.TITLE);
if (cursor.moveToFirst()) {
do{
test.setText(cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)));
}while(cursor.moveToNext());
}
私は非常に混乱しており、このコードのほとんどはインターネットからのものです。私はこれを2日間試みているので、ここで質問しています。私は自分で何時間も試しました。
編集: 現在のコード。音楽 ID など、カーソルからその曲を再生するために必要なものを見つけるにはどうすればよいですか?
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String songToPlay = value.replaceAll("play song", "").trim();
int music_column_index;
String[] projection = {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Artists.ARTIST,
MediaStore.Audio.Albums.ALBUM,
MediaStore.Audio.Media.TITLE
};
@SuppressWarnings("deprecation")
Cursor cursor = this.managedQuery(uri,
null,
MediaStore.Audio.Media.TITLE + "=?",
new String[]{songToPlay},
MediaStore.Audio.Media.TITLE + " ASC");