0

MP3の曲のジャンルを編集できるAndroidミュージックプレーヤーを書いています。

私が従う手順は次のとおりです。

  1. MP3ファイル自体のジャンルタグを編集します
  2. 変更を反映するようにSqlLiteMediaStore.Audio.Genresテーブルを更新します(Androidが変更自体を取得するために長い「再スキャン」操作をトリガーしたくない)

私の調査によると、MediaStore.Audio.Genres.Membersテーブルを変更する必要があります(つまり、これはジャンル情報を取得するために使用するテーブルです)。

私の問題は、一見単純な削除操作が期待どおりに機能していないことです。

注:示されているようにハードコードされたURIを使用しないことは知っていますが、これは単なるテストコードです...

String uriStr = "content://media/external/audio/genres/2/members";
Uri uri = Uri.parse(uriStr);

// Query the table for the row with ID=5448
Cursor cursor = context.getContentResolver().query(uri, null, BaseColumns._ID + "=5448", null, null);
Log.v("Test", "Row count: " + cursor.getCount());
cursor.close();

// Try to delete row 5448
int rowsCount = context.getContentResolver().delete(uri, BaseColumns._ID + "=5448", null);
Log.v("Test", "Rows deleted: " + rowsCount);

// Try (again) to delete row 5448
rowsCount = mService.getContentResolver().delete(uri, BaseColumns._ID + "=?", new String[]{"5448"});
Log.v("Test", "Rows deleted: " + rowsCount);

// Query (again) the table for the row with ID=5448         
Cursor cursor1 = mService.getContentResolver().query(uri, null, BaseColumns._ID + "=5448", null, null);
Log.v("Test", "Row count: " + cursor1.getCount());
cursor1.close();

上記のコードのログは...

Row count: 1
Rows deleted: 0
Rows deleted: 0
Row count: 1

上記のクエリが有効なエントリを返すのに、削除が失敗するのはなぜですか?

4

3 に答える 3

0

テーブルを編集しても意味がありません。Android は、タグ付けされた音楽で見つけたものでこれを自動的に更新します。問題を mp3 の観点から見てみませんか? ユーザーにジャンルのリストを提示し、置換機能を提供してから、新しいジャンルでトラックを更新します。

于 2012-12-31T17:31:00.943 に答える