AudioGroup 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
AudioGroup 是扬声器、麦克风和 AudioStream
s 的音频中心。
[Android.Runtime.Register("android/net/rtp/AudioGroup", DoNotGenerateAcw=true)]
public class AudioGroup : Java.Lang.Object
[<Android.Runtime.Register("android/net/rtp/AudioGroup", DoNotGenerateAcw=true)>]
type AudioGroup = class
inherit Object
- 继承
- 属性
注解
AudioGroup 是扬声器、麦克风和 AudioStream
s 的音频中心。 每个组件都可以通过调用 #setMode(int)
或关闭逻辑方式打开或 RtpStream#setMode(int)
关闭。 AudioGroup 将经历这些组件,并在其执行循环中逐个处理它们。 循环由四个步骤组成。 首先,对于不在其中 RtpStream#MODE_SEND_ONLY
的每个 AudioStream,解码其传入数据包并将其存储在其缓冲区中。 然后,如果启用了麦克风,则处理录制的音频并将其存储在其缓冲区中。 第三,如果启用扬声器,请混合所有 AudioStream 缓冲区并播放。 最后,对于未加入 RtpStream#MODE_RECEIVE_ONLY
的每个 AudioStream,混合所有其他缓冲区并发送回编码的数据包。 如果其中没有 AudioStream,则 AudioGroup 不执行任何操作。
使用这些类之前,必须注意一些事项。 性能与系统负载和网络带宽高度相关。 通常,更简单的 AudioCodec
CPU 周期成本更少,但需要更多的网络带宽,反之亦然。 同时使用两个 AudioStream 不仅能增加负载,而且增加带宽。 条件因设备而异,开发人员应选择正确的组合以获得最佳结果。
有时,同时保留多个 AudioGroup 会很有用。 例如,通过 IP 的语音(VoIP)应用程序可能希望将电话呼叫置于保持状态,以便进行新的呼叫,但仍允许电话会议中的人员相互交谈。 这可以使用两个 AudioGroup 轻松完成,但存在一些限制。 由于扬声器和麦克风是全局共享的资源,因此一次只允许一个 AudioGroup 以非 #MODE_ON_HOLD
模式运行。 其他资源将无法获取这些资源,并且以无提示方式失败。
<p class=“note”>Using this class requires android.Manifest.permission#RECORD_AUDIO
permission. 开发人员应将音频模式 AudioManager#MODE_IN_COMMUNICATION
设置为使用 AudioManager#setMode(int)
,并在未使用任何 AudioGroup 时将其更改回来。</P>
此成员已弃用。 android.net.sip.SipManager
不再支持关联的类,不应用作未来 VOIP 应用的基础。
适用于 . 的 android.net.rtp.AudioGroup
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
AudioGroup() |
创建空的 AudioGroup。 |
AudioGroup(Context) |
创建空的 AudioGroup。 |
AudioGroup(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
JniIdentityHashCode |
AudioGroup 是扬声器、麦克风和 |
JniPeerMembers |
AudioGroup 是扬声器、麦克风和 |
Mode |
返回当前模式。 - 或 - 更改当前模式。 |
PeerReference |
AudioGroup 是扬声器、麦克风和 |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
方法
Clear() |
删除此组中的每一个 |
Clone() |
创建并返回此对象的副本。 (继承自 Object) |
Dispose() |
AudioGroup 是扬声器、麦克风和 |
Dispose(Boolean) |
AudioGroup 是扬声器、麦克风和 |
Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
GetStreams() |
返回 |
JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
SendDtmf(Int32) |
向此组中的每一个 |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
ToArray<T>() |
AudioGroup 是扬声器、麦克风和 |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
AudioGroup 是扬声器、麦克风和 |
Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em> 或 <em>interrupted</em>。<>< (继承自 Object) |
Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
IJavaPeerable.Disposed() |
AudioGroup 是扬声器、麦克风和 |
IJavaPeerable.DisposeUnlessReferenced() |
AudioGroup 是扬声器、麦克风和 |
IJavaPeerable.Finalized() |
AudioGroup 是扬声器、麦克风和 |
IJavaPeerable.JniManagedPeerState |
AudioGroup 是扬声器、麦克风和 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
AudioGroup 是扬声器、麦克风和 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
AudioGroup 是扬声器、麦克风和 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
AudioGroup 是扬声器、麦克风和 |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
AudioGroup 是扬声器、麦克风和 |
GetJniTypeName(IJavaPeerable) |
AudioGroup 是扬声器、麦克风和 |