Hi guys,
I've added a new feature especially useful for advanced users.There's a new available Intent action.
"com.cav.foobar2000controller.GET_PLAYING_SONG"
It will allow you to get the current song info via Intent without havng to care about http requests or foobar2000 HTTP Control API.
Unlike previous Intent actions, this one is a bit more complicated to work with, but it's actually fairly easy.
You'll need to send a broadcast specifying a callback Intent action string for me to send you back the information in form of JSON-like string.
Here's an example:
Sending the Broadcast
// Create a Bundle with the action you want to be called from foobar2000 controller
Bundle extras = new Bundle();
// This is mandatory! The key MUST BE "callbackAction". The action "com.mybroadcast.song_info" can be any of your choice
extras.putString("callbackAction", "com.mybroadcast.song_info");
// Create a new Intent. Set the new action and add the extras.
Intent intent = new Intent();
intent.setAction("com.cav.foobar2000controller.GET_PLAYING_SONG");
intent.putExtras(extras);
// Send the Broadcast. foobar2000 controller will receive it and send you back a Broadcast with the song informationReceiving the information
sendBroadcast(intent);
// You need to have a BroadcastReceiver. It can be a custom class of yours.
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
// This is where the song info is stored.
// It will be like: {"title":"Song title", "artist":"Song artist", "album":"Song album", "length": 123, "rating":5}
// You can convert it to JSONObject (or any other implementation)
String song = extras.getString("song");
// Do whatever you want with the retrieved song.
Toast.makeText(MainActivity.this, song, Toast.LENGTH_LONG).show();
}
}
};
// Register the receiver with the action you've provided before
registerReceiver(broadcastReceiver, new IntentFilter("com.mybroadcast.song_info"));
Here's a full Android studio project example using this new Intent action;
https://www.dropbox.com/s/vyuuiyjlgwkavcs/SendBroadcastTest.zip?dl=1
Enjoy!
https://www.dropbox.com/s/vyuuiyjlgwkavcs/SendBroadcastTest.zip?dl=1
Enjoy!