如何检查音乐是不是正在从哪个音乐应用程序播放?

Posted

技术标签:

【中文标题】如何检查音乐是不是正在从哪个音乐应用程序播放?【英文标题】:How to check if music is being played from which music app?如何检查音乐是否正在从哪个音乐应用程序播放? 【发布时间】:2015-06-29 21:58:39 【问题描述】:

我如何检查音乐是从哪个音乐应用程序在 android 设备上播放的?

使用 AudioManager,我们可以检查音乐是否正在播放。但它没有提供正在播放它的音乐应用程序的详细信息。

音频管理器是 = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);

am.isMusicActive() 如果在设备中播放音乐,则返回 true。但我想要播放它的音乐应用名称。

参考资料:

How do you check if music is playing by using a broadcast receiver?

Android development : To find out which app is playing music currently

例如,如果我从 Google 音乐播放器播放音乐。然后我必须能够将音乐应用名称命名为“Google 音乐播放器”。

对此的任何答复将不胜感激。谢谢!

【问题讨论】:

有什么办法检查吗? 【参考方案1】:

试试这个来获取当前播放曲目的文件路径:

public Cursor query(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder, int limit) 
    try 
        ContentResolver resolver = context.getContentResolver();
        if (resolver == null) return null;
        if (limit > 0) uri = uri.buildUpon().appendQueryParameter("limit", "" + limit).build();
        return resolver.query(uri, projection, selection, selectionArgs, sortOrder);
     catch (UnsupportedOperationException ex)  return null; 

private BroadcastReceiver mReceiver = new BroadcastReceiver() 
    @Override
    public void onReceive(Context context, Intent intent) 
        String path = intent.getStringExtra("track").replaceAll("'","''");
        Cursor c = query(context, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                new String[]  MediaStore.Audio.Media.DATA , MediaStore.Audio.Media.TITLE + "='" + path + "'",
                null, null, 0);
        try 
            if (c == null || c.getCount() == 0) return;
            int size = c.getCount();
            if (size != 1) return;
            c.moveToNext();

            // Here's the song path
            String songPath = c.getString(0);
            Log.d("ROAST_APP", "" + songPath);
         finally 
            if (c != null) c.close();
        
    
;

@Override
protected 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);

来源:Track info of currently playing musicNeedletagger

【讨论】:

以上是关于如何检查音乐是不是正在从哪个音乐应用程序播放?的主要内容,如果未能解决你的问题,请参考以下文章

检查是不是播放音乐[关闭]

您如何检测 Phaser 中是不是正在播放任何音乐?

耳机线控启动APP时如何查看iOS APP【音乐播放应用】是不是在后台

iOS如何播放在文件夹里面存放的音乐呢?

IOS如何在后台播放音乐声音并暂停当前播放的音乐应用程序

如何将音乐从我的应用程序切换到 ipod