Track info of currently playing music

android

Solution

This might help. I use this to get metadata on audio files in one of my apps:

String scheme = mAudioUri.getScheme();
String title = "";
String artist = "";
if(scheme.equals("content")) {
    String[] proj = {MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST};
    Cursor cursor = this.getContentResolver().query(mAudioUri, proj, null, null, null);
    if(cursor != null && cursor.getCount() > 0) {
        cursor.moveToFirst();
        if(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE) != -1) {  
            title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
            artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
        }
    }
}

There are lots of columns in the MediaStore.Audio.Media class which you can use to find what you're looking for I think.

Problem

I am implementing an application related to getting current music track information. I am using the following code to get that: ``` public class CurrentMusicTrackInfoActivity extends Activity { public static final String SERVICECMD = "com.android.music.musicservicecommand"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); IntentFilter iF = new IntentFilter(); iF.addAction("com.android.music.metachanged"); iF.addAction("com.android.music.playstatechanged"); iF.addAction("com.android.music.playbackcomplete"); iF.addAction("com.android.music.queuechanged"); registerReceiver(mReceiver, iF); } private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String cmd = intent.getStringExtra("command"); Log.v("tag ", action + " / " + cmd); String artist = intent.getStringExtra("artist"); String album = intent.getStringExtra("album"); String track = intent.getStringExtra("track"); Log.v("tag", artist + ":" + album + ":" + track); Toast.makeText(CurrentMusicTrackInfoActivity.this, track, Toast.LENGTH_SHORT).show(); } }; } ``` It is working fine for some mobiles only. I want to implement code to get current music track info in all Android devices (e.g. HTC and Samsung devices). Is there any way of doing this?

Original source