【发布时间】:2023-03-20 22:15:02
【问题描述】:
我在doc 中查看了音频管理器。我想在设备中播放任何音频/视频(媒体)时收到通知。那么广播接收器是否有任何动作来获取媒体的历史记录?我想,我可以使用可访问性从通知更改中获取它。但我不想使用辅助功能,因为我想跟踪将在任何默认媒体播放器或设备中任何已安装软件中播放的所有媒体。有什么办法吗?
我尝试了以下代码来获取有关媒体轨道的信息。但它仅适用于google play music。如何从所有默认/安装的媒体播放器中获取曲目信息。
public class MainActivity extends Activity {
public static final String SERVICECMD = "com.android.music.musicservicecommand";
public static final String CMDNAME = "command";
public static final String CMDTOGGLEPAUSE = "togglepause";
public static final String CMDSTOP = "stop";
public static final String CMDPAUSE = "pause";
public static final String CMDPREVIOUS = "previous";
public static final String CMDNEXT = "next";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_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.d("mIntentReceiver.onReceive: ", action + " / " + cmd);
String artist = intent.getStringExtra("artist");
String album = intent.getStringExtra("album");
String track = intent.getStringExtra("track");
Log.d("Music","artist: "+artist+"\n album: "+album+"\n track: "+track);
}
};
任何帮助将不胜感激!
【问题讨论】:
标签: android broadcastreceiver android-mediaplayer