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()回调期间).但是,媒体按键应用不是那么简单-实际上,对应媒体按键处理是很重要的,如果你的应用不可见,视图最好不能进行控制。

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



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

Android文档学习09_多媒体2

在开始播放音频之前,App必须先获取需要处理的音频流的音频焦点,通过requestAudioFocus()方法,成功则返回AUDIOFOCUS_REQUEST_GRANTED常量,失败则返回AUDIO...
  • u012992171
  • u012992171
  • 2013年12月14日 17:13
  • 457

android多媒体框架学习

Android Multimedia Framework overview(多媒体框架概述)--base on jellybean(一) jellybean 的多媒体跟以前的版本,通过对比没啥变化,...
  • sunyuyangg123
  • sunyuyangg123
  • 2014年02月07日 14:50
  • 4920

​Android 的多媒体框架(一)

最近在学习Android的多媒体框架,omx,Stagefright,awesomeplayer等知识,稍微有了一点了解,也参考了很多网上的资料,现从上而下(Java层到kernel层)梳理一下~。 ...
  • qq_32790673
  • qq_32790673
  • 2017年02月04日 11:50
  • 443

Android多媒体--MediaCodec 中文API文档

*转载请注明出处:http://www.cnblogs.com/roger-yu/ MediaCodec public final class MediaCodec extends Object ...
  • dxpqxb
  • dxpqxb
  • 2017年06月13日 17:26
  • 566

android 多媒体几个不错的博客

http://blog.csdn.net/gzzaigcnforever/article/details/26849549 http://blog.csdn.net/crazyman2010/arti...
  • WAN8180192
  • WAN8180192
  • 2015年08月06日 16:41
  • 1332

Android StagefrightPlayer

1. 对StagefrightPlayer的好奇 前面对StagefrightPlayer的创建流程已经分析清楚了,即在Android::createPlayer中根据url的type来创建不同的p...
  • MyArrow
  • MyArrow
  • 2011年12月13日 10:59
  • 5642

Android多媒体详解

1、     MediaPlayer播放音频 2、     SoundPool播放音频 3、     VideoView播放视频 4、     MediaPlayer和SurfaceView播放视频 ...
  • mxcsdn
  • mxcsdn
  • 2016年04月12日 20:51
  • 995

Android多媒体篇

多媒体接口和娱乐、游戏等业务密切相关,灵活地采用多媒体接口,可以使应用具备更强的吸引力。 1.音频处理         作为多媒体处理的最基本的组成部分,音频处理在移动终端上十分复杂。音频的播放、记录...
  • u011014707
  • u011014707
  • 2015年07月01日 09:28
  • 3086

Android多媒体开发框架

一、Vitamio框架Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染。Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发...
  • axi295309066
  • axi295309066
  • 2016年10月02日 16:06
  • 2056

Android多媒体整体架构图

MediaPlayer框架图   Camera框架图   SoundRecorder框架图   VideoCamera框架图   OpenCore与Skia   ...
  • dxpqxb
  • dxpqxb
  • 2016年12月13日 10:33
  • 1242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android文档学习09_多媒体1
举报原因:
原因补充:

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