0

私はMediaPlayerアプリに取り組んでおり、MediaStore.Audio.Mediaを使用してSDカード上のすべての曲とそのタイトル、アルバム、アーティストなどのタグを取得しています。Artist フィールドが空かどうかを確認するカスタム アダプターがあるので、そのフィールドに「Artist unknown」を設定できます。私が使用するアダプターとカーソルは、この質問とは無関係であると考えているため、この問題はアダプターの外部でも発生するため、ここにコードを貼り付けることはしません。

ここに問題があります: mp3 ソングにアーティスト タグがない場合、アーティスト フィールド (MediaStore.Audio.Media.ARTIST フィールド) のカーソルは "" を返します。値 "" を持つ文字列と比較するたびに、比較が false になるため、それがどのようなデータ型であるか (文字列である必要があります) がわかりません。そのフィールドの戻り値を一時的な文字列に割り当て、それを前述の "" と比較しても、まだ false になります。null、「不明」、「」も試しましたが、何も機能しません。私はここで本当に行き詰まりました。どんな種類の助けも大歓迎です。

よろしくお願いします、イヴァン。

4

1 に答える 1

1

私はまったく同じフィールド ( MediaStore.Audio.Media.ARTIST ) を使用していますが、私が気づいたことは異なります。曲のアーティスト情報を取得しようとすると、現在利用できる情報がない場合、得られるのは<unknown>文字列です。

私もその情報を変更したかったので、次のことを行いました。

String artist = (((cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)) == null) 
                            || cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)).equals("")
                            || cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)).equals("<unknown>")) ? 
                "Artist Unknown" : cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));

null と equals.("")」チェックはとにかく役に立たないはずです。

于 2012-07-27T14:08:19.777 に答える