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);
来自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);
相关文章推荐
- android dialog
- 将Eclipse代码导入到AndroidStudio的两种方式
- Android 编程下 Touch 事件的分发和消费机制
- android activity切换效果实现
- [Flash 3D] 又是一个难题解决了。(Flash3D在android中运行)
- Android项目结构
- Android RecyclerView的基本使用
- Android SDK 国内镜像
- Android在包名称更改项目
- 8 个最优秀的 Android Studio 插件
- android:scaleType="fitXY" 详细说明
- Android ActionBar 返回上一个Activity
- Android 开源框架Universal-Image-Loader完全解析
- android只让某个activity运行一次-SharedPreferences
- Android Drawable、Bitmap、byte[]之间的转换
- Android下拉刷新
- Phone---Android中调用打电话
- android百度定位导航
- Android 切换页面关闭软键盘实现
- Android开发将Bitmap转换成图片保存到sd卡