Android文档学习09_多媒体1

原创 2013年12月03日 13:39:23


播放、停止、暂停、快进,快退和媒体录放控制

Android为播放音乐、警报、通知、电话铃声、系统声音、通话音量、双音多频音维护了单独的音频流。首先允许用户控制每个单独流的音量

大部分时候使用STREAM_MUSIC流来播放音频

默认情况下,按音量控制键会改变实际的音频流的音量。如果您的应用当前没有播放任何东西、按音量键会调整电话音量

Android 提供了便利的setVolumeControlStream()方法让音量按键直接处理你指定的音频流。

在应用生命周期中应该尽早调用--因为您只需要在activity生命周期中调用一次,最典型的是onCreate()方法中调用(在Activity或控制媒体的Fragment).这保证了不管应用是否可见,音量控制功能仍然像用户期待的。

setVolumeControlStream(AudioManager.STREAM_MUSIC);


在许多手机,有线和无线耳机上都有媒体播放按键,如播放、暂停、停止、快进和快退.当用户操作这些键时,系统会广播一个含有ACTION_MEDIA_BUTTON动作的intent


<receiver android:name=".RemoteControlReceiver">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
    </intent-filter>
</receiver>


在receiver实现里面,需要获的触发广播的按键。Intent在EXTRA_KEY_EVENT里面包含了按键,KeyEvent类包含了一个KEYCODE_MEDIA_*静态常量列表,每项代表了各种媒体按键,如KEYCODE_MEDIA_PLAY_PAUSE(暂停)和KEYCODE_MEDIA_NEXT(下一个)


public class RemoteControlReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
            KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
            if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {
                // Handle key press.
            }
        }
    }
}



接下来的代码能够在应用注册或者取消注册接收媒体按键事件时候使用。如果注册了,你的广播接收器是一个高级的接收器能够接收到所有的媒体按键广播


AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...
 
// Start listening for button presses
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
...
 
// Stop listening for button presses
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);


应用应该取消注册大多数的接收器,当他们变得不活跃或者不可见(像是在onStop()回调期间).但是,媒体按键应用不是那么简单-实际上,对应媒体按键处理是很重要的,如果你的应用不可见,视图最好不能进行控制。

一个更好地方法是当应用程序得到和失去音频焦点的时候,注册和取消注册媒体按钮事件接收器。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

09_Android的多媒体系统

  • 2013年08月07日 12:01
  • 805KB
  • 下载

【android学习之十四】——多媒体1:音乐播放

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误还请大家多多批评...

Android学习之路(1)——计算器——2017_01_09

本人菜鸟一只,现在的我读大三,临近毕业,自己是Android爱好者, 这将是我发表的第一篇关于Android的博客,以后持续更新,给大家提供本人对Android的理解的同时也激励自己时刻努力进步。文章...

Android中多媒体文件、文档以及各类文件的获取

最近项目中需要对好友进行发送文件需求,在android中对文件以及其它文档的获取一直没有找到一个好的案例,自己在分析“仿小米文件夹管理”时感觉自己非常的菜B,看不懂源代码。我也问了他人的思路,但是他们...

精通ANDROID 5多媒体开发.part1

  • 2017年06月05日 00:08
  • 69MB
  • 下载

Android ndk文档翻译之三:Android.mk文件语法规范(上部)2010-09-14 14:32

今天翻译ANDROID-MK.TXT文件 Android.mk文件语法规范 Introduction: Android.mk编译文件是用来向AndroidNDK描述你...

android-x86-7.1-rc1.part09.rar

  • 2017年07月03日 15:37
  • 21.26MB
  • 下载

android-x86-7.1-rc1.zip09

  • 2017年07月03日 02:20
  • 21.16MB
  • 下载

JavaScript学习笔记(09)之文档对象模型DOM

DOM文档对象模型是一个能够使程序和脚本动态访问和更新文档内容、结构及样式的接口。     DOM将HTML文档中的各个对象按容器级别组织成一种树形访问结构,以便于JavaScript等面向对象编程语...

android多媒体框架之流媒体具体流程篇1----base on jellybean(十一)

转载 病了两周,一吃医生开的药就加重,NND以后不去那儿看病了,最近好多了但人也懒了,也好久没有更新博文了,难道我的计划要这样的搁浅了?NO!生命不息,笔耕不辍,哈哈,有...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android文档学习09_多媒体1
举报原因:
原因补充:

(最多只允许输入30个字)