分类:android应用开发 -05-13 14:35 7605人阅读 评论(13) 收藏 举报 音乐 android string action cmd command
今天在csdn上有问这个问题就研究下,正好自己的项目也需要用到,顺便做个记录。
来自android自带的music源码,下面是广播接收的代码,通过发送广播来控制音乐的播放,停止等。
代码如下:
[java]view plain copy print ?publicstaticfinalStringPLAYSTATE_CHANGED="com.android.music.playstatechanged"; publicstaticfinalStringMETA_CHANGED="com.android.music.metachanged"; publicstaticfinalStringQUEUE_CHANGED="com.android.music.queuechanged"; publicstaticfinalStringPLAYBACK_COMPLETE="com.android.music.playbackcomplete"; publicstaticfinalStringASYNC_OPEN_COMPLETE="com.android.music.asyncopencomplete"; publicstaticfinalStringSERVICECMD="com.android.music.musicservicecommand"; publicstaticfinalStringCMDNAME="command"; publicstaticfinalStringCMDTOGGLEPAUSE="togglepause"; publicstaticfinalStringCMDSTOP="stop"; publicstaticfinalStringCMDPAUSE="pause"; publicstaticfinalStringCMDPREVIOUS="previous"; publicstaticfinalStringCMDNEXT="next"; privateBroadcastReceivermIntentReceiver=newBroadcastReceiver(){ @Override publicvoidonReceive(Contextcontext,Intentintent){ Stringaction=intent.getAction(); Stringcmd=intent.getStringExtra("command"); if(CMDNEXT.equals(cmd)||NEXT_ACTION.equals(action)){ next(true); }elseif(CMDPREVIOUS.equals(cmd)||PREVIOUS_ACTION.equals(action)){ prev(); }elseif(CMDTOGGLEPAUSE.equals(cmd)||TOGGLEPAUSE_ACTION.equals(action)){ if(isPlaying()){ pause(); }else{ play(); } }elseif(CMDPAUSE.equals(cmd)||PAUSE_ACTION.equals(action)){ pause(); }elseif(CMDSTOP.equals(cmd)){ pause(); seek(0); }elseif(MediaAppWidgetProvider.CMDAPPWIDGETUPDATE.equals(cmd)){ //Someoneaskedustorefreshasetofspecificwidgets,probably //becausetheywerejustadded. int[]appWidgetIds=intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS); mAppWidgetProvider.performUpdate(MediaPlaybackService.this,appWidgetIds); } } };
通过分析可以得出要暂停音乐可以有两种方法,一种是直接发送cmd,另外一种是发送action。
如下暂停音乐播放代码:
[java]view plain copy print ?privatevoidpauseMusic(){ IntentfreshIntent=newIntent(); freshIntent.setAction("com.android.music.musicservicecommand.pause"); freshIntent.putExtra("command","pause"); sendBroadcast(freshIntent); }