【问题标题】:Get info about audio, playing in another application获取有关音频的信息,在另一个应用程序中播放
【发布时间】:2014-03-07 10:04:05
【问题描述】:

我如何获取有关另一个应用程序播放音频的源(filedesc.或 uri)的信息?

在 AudioManager 中只有 isMusicActive() 方法,它不提供任何附加信息。 因为它不是我的应用程序,所以我没有任何 MediaPlayer 对象。

【问题讨论】:

    标签: android audio android-mediaplayer android-audiomanager


    【解决方案1】:

    为已知的动作意图注册广播接收器并处理广播以显示或使用轨道信息做某事,source

    public class CurrentMusicTrackInfoActivity extends Activity {
    
        public static final String SERVICECMD = "com.android.music.musicservicecommand";
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.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");
            iF.addAction("com.htc.music.metachanged");
            iF.addAction("fm.last.android.metachanged");
            iF.addAction("com.sec.android.app.music.metachanged");
            iF.addAction("com.nullsoft.winamp.metachanged");
            iF.addAction("com.amazon.mp3.metachanged");     
            iF.addAction("com.miui.player.metachanged");        
            iF.addAction("com.real.IMP.metachanged");
            iF.addAction("com.sonyericsson.music.metachanged");
            iF.addAction("com.rdio.android.metachanged");
            iF.addAction("com.samsung.sec.android.MusicPlayer.metachanged");
            iF.addAction("com.andrew.apollo.metachanged");
    
            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.v("tag ", action + " / " + cmd);
                String artist = intent.getStringExtra("artist");
                String album = intent.getStringExtra("album");
                String track = intent.getStringExtra("track");
                Log.v("tag", artist + ":" + album + ":" + track);
                Toast.makeText(CurrentMusicTrackInfoActivity.this, track, Toast.LENGTH_SHORT).show();
            }
        };
    
    }
    

    【讨论】:

    • 谢谢!好像就是我要找的!
    • 这个解决方案对我来说已经足够好了。但是还有一个额外的问题。如果音乐先开始播放,然后我启动这个应用程序,是否有可能获得一些关于当前播放歌曲的信息(可能是一些粘性意图)?
    • 如何获取当前播放歌曲的专辑封面?
    • 你找到专辑封面的解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多