zoukankan      html  css  js  c++  java
  • iOS AVAduioSession中的Category Mode Options

    https://www.jianshu.com/p/87094382be5d

    • Category

    • AVAudioSessionCategoryAmbient

    1.只支持播放
    2.当按“静音”或者锁屏会静音
    3.不会引起不支持混音的App中断

    • AVAudioSessionCategorySoloAmbient

    1.只支持播放
    2.当按“静音”或者锁屏会静音
    3.会引起不支持混音的App中断

    • AVAudioSessionCategoryPlayback

    1.只支持播放
    2.当按“静音”或者锁屏不会静音
    3.默认会引起不支持混音的App中断,但是,如果你想要在用这个category的时候也支持混合播放,那么得加AVAudioSessionCategoryOptionMixWithOthers,这是一个option

    • AVAudioSessionCategoryRecord(作者暂时没有做过录音相关)

    1.只支持录音,不支持播放(这个类的作用是在系统上几乎所有的输出都保持沉默,只要会话是活动的)
    2.继续录音当你的应用程序转换为背景(例如,当屏幕锁),到uibackgroundmodes关键在你的信息属性列表文件中添加音频的价值。
    3.用户必须授予音频录制的权限。
    4.使用这个类不防止音频会议被电话,报警中断,或其他非混合音频会议

    • AVAudioSessionCategoryPlayAndRecord

    1.用于录音(输入)和播放(输出)音频的类别,如用于VoIP(因特网语音协议)的应用程序。
    2.当按“静音”或者锁屏不会静音。

    1. 用于既需要播放声音又需要录音的应用。该Category提供录音和播放功能。如果你的应用需要用到iPhone上的听筒,该category是你唯一的选择,在该Category下声音的默认出口为听筒(在没有外接设备的情况下)。
      4.默认会引起不支持混音的App中断,但是,如果你想要在用这个category的时候也支持混合播放,那么得加AVAudioSessionCategoryOptionMixWithOthers,这是一个option
    • AVAudioSessionCategoryMultiRoute(没用过)
    • AVAudioSessionCategoryAudioProcessing(没用过,iOS10被遗弃)
    • Options

    • AVAudioSessionCategoryOptionMixWithOthers

    1.决定是否需要和其它app混音
    这个option只在category为AVAudioSessionCategoryPlayAndRecord, AVAudioSessionCategoryPlayback, AVAudioSessionCategoryMultiRout
    2.如果category为AVAudioSessionCategoryAmbient,那么这个option是默认设置的

    1. 如果option设置为AVAudioSessionCategoryOptionDuckOthers或者
      AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers,那么这个option也是自动设置的
    • AVAudioSessionCategoryOptionDuckOthers

    1.使来自其他会话的音频被回避(音量减小),而此会话中的音频播放,就是混合播放的时候会把其它app播放声音减小
    2.只有category为 AVAudioSessionCategoryAmbient, AVAudioSessionCategoryPlayAndRecord, AVAudioSessionCategoryPlayback, AVAudioSessionCategoryMultiRoute有效

    • AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers

    1.只有category为 AVAudioSessionCategoryPlayAndRecord, AVAudioSessionCategoryPlayback, and AVAudioSessionCategoryMultiRoute有效
    2.确定当应用程序的音频内容被播放时,另一应用程序的连续通话内容是否暂停(这个暂未实现)
    3.当您使用此选项配置音频会话类别时,当您停用会话时,您应该通知系统上的其他应用程序,以便它们可以恢复音频播放。为此,请使用
    avaudiosessionsetactiveoptionnotifyothersondeactivation
    选项

    AVAudioSessionCategoryOptionAllowBluetooth

    1.确定蓝牙免提设备出现可用的输入途径
    2.只有在category为category 为[AVAudioSessionCategoryPlayAndRecord或者
    AVAudioSessionCategoryRecord才有效
    3.设置此选项需要允许路由音频输入和输出到配对的蓝牙免提模式(HFP)装置。如果清除此选项,配对的蓝牙免提不显示为可用的音频输入线路
    4.如果应用程序使用 setPreferredInput:error:
    选择一个蓝牙免提输入法,输出将自动更改为相应的蓝牙免提输出。同样,选择蓝牙免提输出使用 mpvolumeview 对象的路径选择器,将自动改变输入到相应的蓝牙免提输入。因此,音频输入和输出会被路由到蓝牙免提装置即使选择只输入或输出

    AVAudioSessionCategoryOptionAllowBluetoothA2DP

    1.高级音频分布(A2DP)是高带宽音频输出的(没有输入)
    2.系统自动设置成A2DP的option如果你的category为avaudiosessioncategoryambient
    avaudiosessioncategorysoloambient或avaudiosessioncategoryplayback
    类别.
    3.从iOS 10开始,应用程序使用
    avaudiosessioncategoryplayandrecord
    可能也会允许路由输出配对蓝牙设备。要启用此行为,您需要在设置音频会话类别时传递这个类别选项
    4.音频会话使用
    avaudiosessioncategorymultiroute
    或avaudiosessioncategoryrecord
    类别隐式清除此选项。如果清除此选项,配对的蓝牙设备不显示为可用的音频输出线路
    5.如果这个option和AVAudioSessionCategoryOptionAllowBluetooth
    ,那么FHP优先级高

    AVAudioSessionCategoryOptionDefaultToSpeaker

    1.确定音频从内置扬声器输出,而不是输入
    2.只有在category为AVAudioSessionCategoryPlayAndRecord下有效
    3.如果没有其他配件,如耳机,使用的音频将总是路由到扬声器而不是接收器
    3.当使用此选项时,用户手势将会影响。例如,插入耳机会导致路线改变耳机麦克风/耳机,拔出耳机会导致路线改变内置麦克风/扬声器(相对于内置麦克风/接收机)
    4.在使用USB输入唯一附件的情况下,音频输入来自附件,输出将路由到耳机(如果有耳机)或扬声器,如果耳机没有插入。只是将音频路由到扬声器而不是接收器,在音频通常会到达接收器的情况下

    • Mode

    AVAudioSessionModeDefault

    1.对于所有的category都有效

    AVAudioSessionModeVoiceChat

    1.如果您的应用程序正在执行双向语音通信,如使用Internet语音协议(VoIP),请指定此模式
    2.只有在category为AVAudioSessionCategoryPlayAndRecord有效

    AVAudioSessionModeVideoChat

    1.如果您的应用程序参与在线视频会议,请指定此模式
    2.只有在category为AVAudioSessionCategoryPlayAndRecord
    或者AVAudioSessionCategoryRecord情况下才有效

    AVAudioSessionModeGameChat

    1.这种模式是由游戏套件代表使用游戏工具包的语音聊天服务的应用程序设置的
    2.只有在category为AVAudioSessionCategoryPlayAndRecord有效
    3.不要直接设置此模式。如果你需要类似的行为并没有使用GKVoiceChat 对象,使用
    AVAudioSessionModeVoiceChat

    AVAudioSessionModeVideoChat
    代替

    AVAudioSessionModeVideoRecording

    1.如果应用程序正在录制视频,请指定此模式
    2.只有在category为AVAudioSessionCategoryPlayAndRecord
    或者AVAudioSessionCategoryRecord情况下才有效
    3.在具有多个内置麦克风的设备上,使用与摄像机最近的麦克风

    AVAudioSessionModeMeasurement

    1.如果应用程序正在执行音频输入或输出测量,请指定此模式
    2.只有在category为AVAudioSessionCategoryPlayback,
    AVAudioSessionCategoryRecord,
    AVAudioSessionCategoryPlayAndRecord,情况下有效

    AVAudioSessionModeMoviePlayback

    1.如果应用程序播放电影内容,请指定此模式
    2.只有在category为AVAudioSessionCategoryPlayback有效

    AVAudioSessionModeSpokenAudio

    如果你的应用程序播放连续的音频,并且当另一个应用程序(如导航或应用程序)播放少量音频时,请指定此模式

    。。。。。。持续更新

     
     


    作者:edison0428
    链接:https://www.jianshu.com/p/87094382be5d
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    onchange 事件
    JavaScript 声明全局变量和局部变量
    Window 对象 HTML框架标签(Frame)
    HTML DOM Document 对象
    JavaScript 对象
    HTML <frame> 标签的 src 属性
    HTML DOM open() 方法
    数据类型
    python
    angular 在formGroup中失效报错 ngModel cannot be used to register form controls with a parent formGroup directive
  • 原文地址:https://www.cnblogs.com/itlover2013/p/14638629.html
Copyright © 2011-2022 走看看