Issue
Is it possible to get the currently playing song on android using xamarin android?
I tried with the audiomanager but i couldn't read the current track from here
AudioManager am = (AudioManager)Application.Context.GetSystemService(Context.AudioService);
thanks in advance,
Solution
When the phone is playing music, the system will send broadcast which contents the information about the music. So you can use the BroadcastReceiver to get it. I had done a simple demo to get the current playing track.
MainActivity.cs: Add the following code into the OnCreate method
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");
iF.AddAction("com.htc.music.metachanged");
iF.AddAction("fm.last.android.metachanged");
iF.AddAction("com.sec.android.app.music.metachanged");
iF.AddAction("com.nullsoft.winamp.metachanged");
iF.AddAction("com.amazon.mp3.metachanged");
iF.AddAction("com.miui.player.metachanged");
iF.AddAction("com.real.IMP.metachanged");
iF.AddAction("com.sonyericsson.music.metachanged");
iF.AddAction("com.rdio.android.metachanged");
iF.AddAction("com.samsung.sec.android.MusicPlayer.metachanged");
iF.AddAction("com.andrew.apollo.metachanged");
RegisterReceiver(new MusicInfoReceiver(),iF);
MusicInfoReceiver.cs
[BroadcastReceiver]
public class MusicInfoReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
String action = intent.Action;
Boolean playing = intent.GetBooleanExtra("playing", false);
String cmd = intent.GetStringExtra("command");
String artist = intent.GetStringExtra("artist");
String album = intent.GetStringExtra("album");
String track = intent.GetStringExtra("track");
}
}
Answered By - Liyun Zhang - MSFT
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.