Don't show the 'search' context menu for recordings.
diff --git a/src/com/android/music/MediaPlaybackActivity.java b/src/com/android/music/MediaPlaybackActivity.java
index b8612fe..1273a35 100644
--- a/src/com/android/music/MediaPlaybackActivity.java
+++ b/src/com/android/music/MediaPlaybackActivity.java
@@ -22,6 +22,7 @@
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
+import android.content.ContentUris;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -29,6 +30,7 @@
import android.content.ServiceConnection;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.database.Cursor;
import android.graphics.Bitmap;
import android.media.AudioManager;
import android.media.MediaFile;
@@ -269,15 +271,38 @@
String artist;
String album;
String song;
+ long audioid;
try {
artist = mService.getArtistName();
album = mService.getAlbumName();
song = mService.getTrackName();
+ audioid = mService.getAudioId();
} catch (RemoteException ex) {
return true;
}
-
+
+ if (MediaFile.UNKNOWN_STRING.equals(album) &&
+ MediaFile.UNKNOWN_STRING.equals(artist) &&
+ song != null &&
+ song.startsWith("recording")) {
+ // not music
+ return false;
+ }
+ Cursor c = MusicUtils.query(this,
+ ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, audioid),
+ new String[] {MediaStore.Audio.Media.IS_MUSIC}, null, null, null);
+ boolean ismusic = true;
+ if (c != null) {
+ if (c.moveToFirst()) {
+ ismusic = c.getInt(0) != 0;
+ }
+ c.close();
+ }
+ if (!ismusic) {
+ return false;
+ }
+
boolean knownartist =
(artist != null) && !MediaFile.UNKNOWN_STRING.equals(artist);
diff --git a/src/com/android/music/TrackBrowserActivity.java b/src/com/android/music/TrackBrowserActivity.java
index 8f122db..f11c880 100644
--- a/src/com/android/music/TrackBrowserActivity.java
+++ b/src/com/android/music/TrackBrowserActivity.java
@@ -144,7 +144,8 @@
MediaStore.Audio.Media.ARTIST_ID,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Playlists.Members.PLAY_ORDER,
- MediaStore.Audio.Playlists.Members.AUDIO_ID
+ MediaStore.Audio.Playlists.Members.AUDIO_ID,
+ MediaStore.Audio.Media.IS_MUSIC
};
setContentView(R.layout.media_picker_activity);
@@ -558,6 +559,33 @@
}
};
+ // Cursor should be positioned on the entry to be checked
+ // Returns false if the entry matches the naming pattern used for recordings,
+ // or if it is marked as not music in the database.
+ private boolean isMusic(Cursor c) {
+ int titleidx = c.getColumnIndex(MediaStore.Audio.Media.TITLE);
+ int albumidx = c.getColumnIndex(MediaStore.Audio.Media.ALBUM);
+ int artistidx = c.getColumnIndex(MediaStore.Audio.Media.ARTIST);
+
+ String title = c.getString(titleidx);
+ String album = c.getString(albumidx);
+ String artist = c.getString(artistidx);
+ if (MediaFile.UNKNOWN_STRING.equals(album) &&
+ MediaFile.UNKNOWN_STRING.equals(artist) &&
+ title != null &&
+ title.startsWith("recording")) {
+ // not music
+ return false;
+ }
+
+ int ismusic_idx = c.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC);
+ boolean ismusic = true;
+ if (ismusic_idx >= 0) {
+ ismusic = mTrackCursor.getInt(ismusic_idx) != 0;
+ }
+ return ismusic;
+ }
+
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfoIn) {
menu.add(0, PLAY_SELECTION, 0, R.string.play_selection);
@@ -568,7 +596,6 @@
}
menu.add(0, USE_AS_RINGTONE, 0, R.string.ringtone_menu);
menu.add(0, DELETE_ITEM, 0, R.string.delete_item);
- menu.add(0, SEARCH, 0, R.string.search_title);
AdapterContextMenuInfo mi = (AdapterContextMenuInfo) menuInfoIn;
mSelectedPosition = mi.position;
mTrackCursor.moveToPosition(mSelectedPosition);
@@ -579,6 +606,10 @@
} catch (IllegalArgumentException ex) {
mSelectedId = mi.id;
}
+ // only add the 'search' menu if the selected item is music
+ if (isMusic(mTrackCursor)) {
+ menu.add(0, SEARCH, 0, R.string.search_title);
+ }
mCurrentAlbumName = mTrackCursor.getString(mTrackCursor.getColumnIndexOrThrow(
MediaStore.Audio.Media.ALBUM));
mCurrentArtistNameForAlbum = mTrackCursor.getString(mTrackCursor.getColumnIndexOrThrow(