Android用音楽プレーヤーが飛ばすブロードキャストインテントを捕獲する方法。ただのメモ。
Google Play Musicの場合。
public class GetMusic extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String a = intent.getAction();
Bundle b = intent.getExtras();
boolean playing = b.getBoolean("playing", false); // 再生中か否か、再生中であればtrue、再生していなければfalseを返す。
String track = b.getString("track"); // 曲名
String artist = b.getString("artist"); // アーティスト名
String album = b.getString("album"); // アルバム
Long duration = b.getLong("duration"); // 楽曲の時間[msec]
}
}
AndroidManifest.xmlの<application></application>間には次のように追記。
<receiver
android:name=".Receiver.GetMusic"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.android.music.metachanged" />
<action android:name="com.android.music.playstatechanged" />
<action android:name="com.android.music.playbackcomplete" />
</intent-filter>
</receiver>
ソニーの端末にプリインストールされている音楽再生ソフトウェアの場合。
public class GetMusic extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String a = intent.getAction();
Bundle b = intent.getExtras();
String track = b.getString("TRACK_NAME"); // 曲名
String artist = b.getString("ARTIST_NAME"); // アーティスト名
String album = b.getString("ALBUM_NAME"); // アルバム
// ソニー製端末のソフトウェアでは楽曲の時間は取得できない
}
}
AndroidManifest.xmlの<application></application>間には次のように追記。
<receiver
android:name=".Receiver.GetMusic"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.sonyericsson.music.playbackcontrol.ACTION_TRACK_STARTED" />
<action android:name="com.sonyericsson.music.playbackcontrol.ACTION_PAUSED" />
<action android:name="com.sonyericsson.music.playbackcontrol.ACTION_SKIPPED" />
</intent-filter>
</receiver>
Leave a Reply