【问题标题】:Get current playing Media Info using Broadcast in Android在 Android 中使用广播获取当前正在播放的媒体信息
【发布时间】: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


    【解决方案1】:

    回答,不,在android中播放的事件歌曲绝对没有广播。

    虽然,音频管理器确实有一个 API,可以告诉您设备中是否正在播放任何东西

    AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
    if(manager.isMusicActive())
     {
         // Something is being played.
     }
    

    http://developer.android.com/reference/android/media/AudioManager.html#isMusicActive%28%29

    除此之外,如果被各种播放器(例如Google play)暴露,您还可以使用provider来找出最近播放的歌曲,但只有在provider暴露时才会起作用。

    【讨论】:

    • 感谢您的建议。我想知道如何获取正在播放的Something 的信息?
    • 正如我在回答中所说的那样,不可能找出正在播放的内容。
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2016-11-11
    • 2011-04-10
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    相关资源
    最近更新 更多