监视Android系统音乐播放器播放的音乐的方法

电脑杂谈  发布时间:2020-07-12 00:06:10  来源:网络整理

天津广播99播放过的歌曲_河北音乐广播_广播音乐播放软件

我最近在处理项目时遇到了一个小问题,即我需要编写一个View来控制系统音乐播放器的播放行为,并获取有关正在播放的音乐的信息,我可能只是想在开始时可以节省一些时间. ,因此我没有直接进入源代码,而是搜索了Internet,但是令我惊讶的是Internet上没有这样的东西. 确实没有儿童鞋能做到这一点吗?嘿,什么都不要说,开始:

获取系统正在播放的音乐的信息. 检查源代码以了解“音乐”应用程序中是否存在MediaPlaybackService.java文件. 我不会编写内部代码. 简而言之广播音乐播放软件,播放音乐有四种情况. 发送广播,这些广播包含正在播放的音乐的信息,因此我们只需要编写广播即可接收信息:

MusicBroadcastReceiver mbr = null;//定义


class MusicBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) {      artistName = intent.getStringExtra("artist"); album = intent.getStringExtra("album"); track = intent.getStringExtra("track"); playing = intent.getBooleanExtra("playing",false); duration = intent.getLongExtra("duration",3000); position = intent.getLongExtra("position",1000); Toast.makeText(TestActivity.this, "playing:" + playing, Toast.LENGTH_SHORT).show(); if(playing){ sd.setVisibility(View.VISIBLE); } else{ if((!sd.isOpened())){ sd.setVisibility(View.GONE); } } if(playing){ ((ImageView)findViewById(R.id.play)).setImageResource(R.drawable.music_pause); }else{ ((ImageView)findViewById(R.id.play)).setImageResource(R.drawable.music_play); } ((TextView)findViewById(R.id.musicName)).setText(track ); ((TextView)findViewById(R.id.musicInfo)).setText(artistName + " / " + album); } }

河北音乐广播_广播音乐播放软件_天津广播99播放过的歌曲

以上是广播接收机,需要在适当的时间进行注册. 由于MediaPlaybackService发送粘性广播,因此在打开应用程序时,我们的也可以接收此广播. 尽管我上方有那些TextView或ImageView.

注册进行广播:

@Override
	protected void onResume() {
		/**
		 * com.android.music.metachanged
		 * com.android.music.queuechanged",
		 * "com.android.music.playbackcomplete"
		 * "com.android.music.playstatechanged"
		 */
		mbr = new MusicBroadcastReceiver();
		IntentFilter intentFilter = new IntentFilter();
		intentFilter.addAction("com.android.music.metachanged");
		intentFilter.addAction("com.android.music.queuechanged");
		intentFilter.addAction("com.android.music.playbackcomplete");
		intentFilter.addAction("com.android.music.playstatechanged");
		registerReceiver(mbr, intentFilter);
		super.onResume();
	}

河北音乐广播_天津广播99播放过的歌曲_广播音乐播放软件

注销广播:

@Override
	protected void onPause() {
		if(mbr != null){
			unregisterReceiver(mbr);
		}
		super.onPause();
	}

控制音乐播放:

河北音乐广播_广播音乐播放软件_天津广播99播放过的歌曲

音乐应用程序中还有一个MediaButtonIntentReceiver. 当我们可以发送特定的广播来控制音乐播放时,如下所示:

private static final String SERVICECMD = "com.android.music.musicservicecommand";
    private static final String CMDNAME = "command";
/*    private static final String CMDTOGGLEPAUSE = "togglepause";
    private static final String CMDSTOP = "stop";*/
    private static final String CMDPAUSE = "pause";
    private static final String CMDPLAY = "play";
    private static final String CMDPREVIOUS = "previous";
    private static final String CMDNEXT = "next";
	
	public void click(View v){
		Intent intent = new Intent(SERVICECMD);
		switch(v.getId()){
			case R.id.pre:{
				intent.putExtra(CMDNAME, CMDPREVIOUS);
			}break;
			case R.id.play:{
				if(playing){
					intent.putExtra(CMDNAME,CMDPAUSE);
		        	((ImageView)findViewById(R.id.play)).setImageResource(R.drawable.music_play);
		        }else{
		        	intent.putExtra(CMDNAME,CMDPLAY);
		        	((ImageView)findViewById(R.id.play)).setImageResource(R.drawable.music_pause);	        	
		        }
			}break;
			case R.id.next:{
				intent.putExtra(CMDNAME,CMDNEXT);
			}break;
		}
		sendBroadcast(intent);
	}

广播时,您不需要设置“额外”,只需:

天津广播99播放过的歌曲_河北音乐广播_广播音乐播放软件

private static final String SERVICECMD = "com.android.music.musicservicecommand";
    private static final String CMDNAME = "command";
/*    private static final String CMDTOGGLEPAUSE = "togglepause";
    private static final String CMDSTOP = "stop";*/
    private static final String CMDPAUSE = "pause";
    private static final String CMDPLAY = "play";
    private static final String CMDPREVIOUS = "previous";
    private static final String CMDNEXT = "next";
替换为
private static final String pause = "com.android.music.musicservicecommand.pause";
private static final String next = "com.android.music.musicservicecommand.next";
private static final String stop = "com.android.music.musicservicecommand.stop";
private static final String previous = "com.android.music.musicservicecommand.previous";

然后创建新的意图(暂停/下一个/停止/上一个);等待通过sendBroadcast发送(意图);也可以发送,但是我没有亲自验证广播音乐播放软件,您可以尝试一下,第一个已验证.

张贴: 以下是锁定屏幕时的图片. 左侧的部分与锁定屏幕有关. 不要受到它的影响.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-277020-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 刘峰
        刘峰

        因为直接守住小日本的出口要道

      • 森山荣治
        森山荣治

        看来这个狼真的来了

      • 顾朝阳
        顾朝阳

        美国害的伊拉克还不够惨吗

      热点图片
      拼命载入中...