您的位置:首页 > 移动开发 > Android开发

android调用,暂停或停止系统自带音乐播放器

2015-06-25 15:05 489 查看
今天在csdn上有问这个问题就研究下,正好自己的项目也需要用到,顺便做个记录。

来自android自带的music源码,下面是广播接收的代码,通过发送广播来控制音乐的播放,停止等。

代码如下:

[java] view plaincopyprint?

public static final String
PLAYSTATE_CHANGED = "com.android.music.playstatechanged";

public static final String META_CHANGED
= "com.android.music.metachanged";

public static final String QUEUE_CHANGED
= "com.android.music.queuechanged";

public static final String PLAYBACK_COMPLETE
= "com.android.music.playbackcomplete";

public static final String ASYNC_OPEN_COMPLETE
= "com.android.music.asyncopencomplete";

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";

private BroadcastReceiver mIntentReceiver = new BroadcastReceiver()
{

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

String cmd = intent.getStringExtra("command");

if (CMDNEXT.equals(cmd) || NEXT_ACTION.equals(action)) {

next(true);

} else if (CMDPREVIOUS.equals(cmd) ||
PREVIOUS_ACTION.equals(action)) {

prev();

} else if (CMDTOGGLEPAUSE.equals(cmd)
|| TOGGLEPAUSE_ACTION.equals(action)) {

if (isPlaying()) {

pause();

} else {

play();

}

} else if (CMDPAUSE.equals(cmd) || PAUSE_ACTION.equals(action))
{

pause();

} else if (CMDSTOP.equals(cmd)) {

pause();

seek(0);

} else if (MediaAppWidgetProvider.CMDAPPWIDGETUPDATE.equals(cmd))
{

// Someone asked us to refresh a set of specific widgets, probably

// because they were just added.

int[] appWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);

mAppWidgetProvider.performUpdate(MediaPlaybackService.this, appWidgetIds);

}

}

};

通过分析可以得出要暂停音乐可以有两种方法,一种是直接发送cmd,另外一种是发送action。

如下暂停音乐播放代码:

[java] view plaincopyprint?

private void pauseMusic() {

Intent freshIntent = new Intent();

freshIntent.setAction("com.android.music.musicservicecommand.pause");

freshIntent.putExtra("command", "pause");

sendBroadcast(freshIntent);

}

调用部分代码如下:

Intent intent=new Intent();

intent.setDataAndType(uri, "audio/*");//利用Uri可播放网络资源和本地资源

intent.setAction(Intent.ACTION_VIEW);

startActivity(intent);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: