- 浏览: 1504389 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (419)
- XMPP (19)
- Android (180)
- Java (59)
- Network (4)
- HTML5 (13)
- Eclipse (9)
- SCM (23)
- C/C++ (4)
- UML (4)
- Libjingle (15)
- Tools&Softwares (29)
- Linphone (5)
- Linux&UNIX (6)
- Windows (18)
- Google (10)
- MISC (3)
- SIP (6)
- SQLite (5)
- Security (4)
- Opensource (29)
- Online (2)
- 文章 (3)
- MemoryLeak (10)
- Decompile (5)
- Ruby (1)
- Image (1)
- Bat (4)
- TTS&ASR (28)
- Multimedia (1)
- iOS (20)
- Asciiflow - ASCII Flow Diagram Tool.htm (1)
- Networking (1)
- DLNA&UPnP (2)
- Chrome (2)
- CI (1)
- SmartHome (0)
- CloudComputing (1)
- NodeJS (3)
- MachineLearning (2)
最新评论
-
bzhao:
点赞123!
Windows的adb shell中使用vi不乱码方法及AdbPutty -
wahahachuang8:
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方 ...
HTML5 WebSocket 技术介绍 -
obehavior:
view.setOnTouchListenerview是什么
[转]android 一直在最前面的浮动窗口效果 -
wutenghua:
[转]android 一直在最前面的浮动窗口效果 -
zee3.lin:
Sorry~~
When I build "call ...
Step by Step about How to Build libjingle 0.4
http://blog.csdn.net/ZhengZhiRen/article/details/6134730
Android自带的音乐播放器只能算是系统之上的应用,并不包含在SDK中,因此SDK文档中没有提及。但是,有时我们需要控制系统音乐播放器的行为,比如切换歌曲、暂停/继续等。这就只能从这个应用的源代码着手了。
这是播放器的代码树:
http://android.git.kernel.org/?p=platform/packages/apps/Music.git;a=tree
可以看到,音乐的播放是由MediaPlaybackService 这个服务实现的:
在服务的onCreate函数中,注册了IntentFilter和BroadcastReceiver。
public void onCreate() { super.onCreate(); …… IntentFilter commandFilter = new IntentFilter(); commandFilter.addAction(SERVICECMD); commandFilter.addAction(TOGGLEPAUSE_ACTION); commandFilter.addAction(PAUSE_ACTION); commandFilter.addAction(NEXT_ACTION); commandFilter.addAction(PREVIOUS_ACTION); registerReceiver(mIntentReceiver, commandFilter); …… }
这些Action常量在类的开头定义为:
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"; public static final String TOGGLEPAUSE_ACTION = "com.android.music.musicservicecommand.togglepause"; public static final String PAUSE_ACTION = "com.android.music.musicservicecommand.pause"; public static final String PREVIOUS_ACTION = "com.android.music.musicservicecommand.previous"; public static final String NEXT_ACTION = "com.android.music.musicservicecommand.next";
BroadcastReceiver接收和IntentFilter匹配的Intent。根据intent.getAction或intent.getStringExtra("command")的内容,进行相应操作,控制播放器的播放。
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String cmd = intent.getStringExtra("command"); MusicUtils.debugLog("mIntentReceiver.onReceive " + action + " / " + cmd); 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(); mPausedByTransientLossOfFocus = false; } else { play(); } } else if (CMDPAUSE.equals(cmd) || PAUSE_ACTION.equals(action)) { pause(); mPausedByTransientLossOfFocus = false; } else if (CMDSTOP.equals(cmd)) { pause(); mPausedByTransientLossOfFocus = false; 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); } } };
由此,我们可以通过广播intent控制播放器了:
Intent intent = new Intent("上面那几个常量"); sendBroadcast(intent);
参考资料:
http://www.poemcode.net/2009/11/android_music/
http://android.git.kernel.org/?p=platform/packages/apps/Music.git;a=tree
发表评论
-
[Android] 为Android安装BusyBox —— 完整的bash shell
2013-12-27 10:19 1490http://www.cnblogs.com/xiaowen ... -
Windows的adb shell中使用vi不乱码方法及AdbPutty
2013-12-27 10:17 7576http://www.veryhuo.com/down/ht ... -
AppMobi推出新XDK,可创建测试PhoneGap项目
2012-09-03 13:39 2637AppMobi今天发布了一个新的工具PhoneGap Mobi ... -
Sencha
2012-09-03 12:59 1185http://www.sencha.com/ Se ... -
jQuery Mobile学习
2012-09-01 12:33 1691使用Jquery Mobile设计Android通讯录 ... -
BackBone
2012-09-01 12:34 1260Backbone.js 是一种重量级javascript M ... -
jQTouch
2012-08-30 15:57 984A Zepto/jQuery plugin for mobil ... -
SwiFTP
2012-08-30 15:43 1307SwiFTP is a FTP server that run ... -
kWS
2012-08-30 15:41 1198kWS is a lightweight and fast W ... -
jQuery Mobile
2012-08-30 15:07 1027http://jquerymobile.com/ -
PhoneGap
2012-08-30 15:07 1044http://phonegap.com/ -
Android Button background image pressed/highlighted and disabled states without
2012-08-06 12:49 1678http://shikii.net/blog/android- ... -
[AndriodTips]Image, saved to sdcard, doesn't appear in Android's Gallery app
2012-08-04 16:15 1158http://stackoverflow.com/questi ... -
Voice detection for Android
2012-07-23 11:39 2347Here it is, my fist JAVA applic ... -
[AndroidTip]local reference table overflow (max=512)的错误解决
2012-07-22 22:56 6049JNI层coding经常会遇到ReferenceTable o ... -
[AndroidTip]EditText如何初始状态不获得焦点?
2012-07-22 15:35 1226最简单的办法是在EditText前面放置一个看不到的Linea ... -
[AndroidTip]android textview滚动条
2012-07-21 14:29 1298本来是想做一个显示文字信息的,当文字很多时View的高度不能超 ... -
Google公布Android 4.1完整功能
2012-07-16 09:48 3185http://www.android.com/about/je ... -
Android开发:使用AudioTrack播放PCM音频数据【附源码】
2012-07-13 15:20 20867http://www.linuxidc.com/Linux/2 ... -
Android上的行车记录仪
2012-07-11 22:31 2010MyCar Recorder DailyRoads
相关推荐
Android 系统广播大全 Intent 跳转界面 Android 系统广播大全 Intent 跳转界面是一种机制,允许应用程序之间进行交互和通信。Intent 是 Android 中的一种机制,可以将动作和数据封装起来,用于启动 Activity、服务...
在Android平台上,开发一个简易本地音乐播放器是一项常见的任务,对于初学者来说是学习Android音频处理和用户界面设计的良好实践。这个"Android简易本地音乐播放器源码"提供了实现这样一个功能的基本框架。以下是对...
Android 广播大全 Intent Action 事件是 Android 系统中的一种核心机制,用于在应用程序之间传递信息和事件通知。 Intent 是一种轻量级的消息对象,用于描述一个操作的请求或描述一个事件。 以下是 Android 广播...
3. **UI设计**:使用Android的布局管理系统(如LinearLayout, RelativeLayout或ConstraintLayout)创建音乐播放器的界面,包括播放/暂停按钮、进度条、歌曲列表等。还需理解XML布局文件的编写和与Java代码的交互。 ...
【Android Studio 手机MP3音乐播放器】是一款基于Android Studio开发的应用程序,它允许用户在他们的智能手机上播放MP3格式的音乐文件。这个项目涵盖了Android应用开发的基础知识,包括UI设计、媒体处理、文件操作...
在Android平台上,对电话状态的监听和拦截是一个需要特别权限和精确实现的敏感操作,这涉及到Android的权限管理、广播接收器(BroadcastReceiver)、事件监听机制以及电话状态的处理。以下知识点将详细介绍如何实现这...
在Android开发中,Intent是一种非常重要的组件,它用于在应用程序的不同组件之间传递消息,实现活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)以及内容提供者(Content Provider)之间的交互...
通过对这个“Android音乐播放器原码”的深入研究,开发者可以全面掌握Android音乐播放应用的实现细节,包括多媒体处理、广播接收器的使用,以及系统服务和用户界面的设计。这将对提升Android应用开发能力大有裨益。...
Android系统广播是Android应用开发中一种重要的机制,它允许应用程序接收系统发送的事件通知。这些事件可以是硬件变化、系统状态变化或者用户的某些操作等。以下是根据提供的文件内容整理的Android常用系统广播知识...
【Android实现音乐播放器——课程设计报告,优秀课设】是一个关于移动应用开发的课程设计项目,主要目标是让学生熟练掌握Android程序开发的各种技术,包括基础的UI界面设计、数据存储、Activity、Service、SQLite...
【基于Android的音乐播放器】是一款专为Android操作系统设计的应用程序,它允许用户在移动设备上轻松管理和播放他们的音乐库。这款应用集成了常见的音乐播放功能,如播放、暂停、快进、后退,以及创建播放列表等。...
Android系统通过BroadcastIntent发送系统级广播,比如设备锁屏、解锁、耳机插入等事件。音乐播放器可以通过BroadcastReceiver监听这些事件,自动调整播放状态,如锁屏后暂停播放,耳机插入时恢复播放。 七、权限...
总的来说,调用Android系统自带录音机是一项基础且实用的功能,通过Intent和MediaRecorder类的结合使用,我们可以轻松实现这一功能。然而,根据实际需求,有时可能需要自定义录音逻辑,以提供更加定制化的用户体验。...
"Android通过Intent传递数据"这一主题,涵盖了Intent的基本使用和数据传递的方式。 Intent分为显式Intent和隐式Intent。显式Intent明确指定要启动的目标组件,而隐式Intent则不指定具体接收者,而是根据Intent的...
在给定的标题"android.intent.action.TIME_TICK"中,涉及的是一个特定的系统广播,当系统时间每分钟改变时,这个广播就会被发送。这个广播事件对于那些需要定时更新或依赖于系统时间的应用程序非常有用。 描述中...
Android 系统广播大全 Android 系统广播是 Android 操作系统中的一种机制,用于在应用程序之间进行通信和交互。它允许不同的应用程序和系统组件之间进行通信,实现了数据的共享和交互。 Android 系统广播大全涵盖了...
这款"android音乐播放器"项目旨在帮助开发者了解如何在Android系统中搜索、管理并播放本地音乐文件。下面将详细介绍该项目中的关键知识点。 一、Android MediaStore API 在Android中,Music播放器首先需要能够获取...
- 广播通信:通过发送广播Intent,多个组件可以监听并响应同一事件,如网络状态改变、设备时间更新等。 - 启动PendingIntent:用于在通知、AlarmManager等场景下间接启动一个Activity或Service。 6. **Intent ...
总的来说,Intent是Android中非常重要的一个概念,它使得组件间的通信变得简单且灵活,是实现应用动态行为和流程控制的关键工具。通过理解并熟练运用Intent,开发者可以构建出更加丰富多彩的Android应用程序。
总结来说,创建一个Android Studio音乐播放器项目涉及了Android开发中的多个关键知识点,包括`MediaPlayer`的使用、UI设计、Service的绑定与通信、ListView的实现、SeekBar的控制以及网络下载管理。通过实践这些功能...