public final class KaraokeController
extends java.lang.Object
限定符和类型 | 类和说明 |
---|---|
static class |
KaraokeController.Error
表示错误码的类,
状态 Listener 会返回这些错误码. |
static class |
KaraokeController.State
表示 Controller 的状态,
KaraokeController.StateListener 中的 State. |
static interface |
KaraokeController.StateListener
Controller 状态的 Listener,
这个 Listener 主要用来上报错误, 以及状态的变化
注意: 这个接口会在主线程被回调.
|
static interface |
KaraokeController.VolumeChangeListener
音量变化Listener
|
限定符和类型 | 字段和说明 |
---|---|
static int |
kEffectParamReverb
音效参数,混响的强度
|
static int |
kReverbConcert
已过时。
不使用该方法调整音效,使用参数调整混响的强度
|
static int |
kReverbKTV
已过时。
不使用该方法调整音效,使用参数调整混响的强度
|
static int |
kReverbStudio
已过时。
不使用该方法调整音效,使用参数调整混响的强度
|
限定符和类型 | 方法和说明 |
---|---|
int |
changeEffectParam(int type,
int val)
改变当前音效参数的值, 对于使用Callback模式没有作用,对于普通模式起作用。
|
void |
changeMusicVolume(int percent)
调整伴奏的音量
伴奏是通过
AudioTrackNative 创建的。 |
int |
changeReverbType(int effect)
已过时。
不使用该方法调整音效,使用参数调整混响的强度
|
void |
changeVoiceVolume(int percent)
调整麦克风的音量
使用百分比调整麦克风的音量, 这个百分比已经是非线性的了, 所以不需要再做转换。
|
boolean |
closeDevice()
关闭混音并释放资源
释放所有在startReverb中得到的资源
|
boolean |
createReverb()
创建混音并创建相关资源
创建Reverb所需要的资源, 必须检查返回值, 有可能会失败.
|
int |
getAudioSource()
得到当前使用的Mic是什么类型
|
java.util.List<java.lang.Integer> |
getAvalibleEffectParam()
得到当前支持的音效参数
|
java.util.List<java.lang.Integer> |
getAvalibleSinkType()
返回支持的输出设备类型
本函数会返回该设备上所有支持的播放设备,应用应该根据支持的输出
设备,决定是否弹出选择输出设备。
|
int |
getCurrentMasterVolume()
得到当前系统音量
|
float |
getCurrentMasterVolumeScale()
得到当前系统音量最大值的百分比
|
int |
getEffectParamMax(int effectParam)
得到音效参数的范围的最大值
|
int |
getEffectParamMin(int effectParam)
得到音效参数的范围的最小值
|
int |
getEffectParamValue(int effectParam)
得到音效参数当前的值
|
static KaraokeController |
getInstance(Context ctx)
得到Controller的实例
|
int |
getMasterVolumeMax()
得到当前系统音量最大值
|
boolean |
isExternalUsbMicAvalible()
检查是否有外置麦克风插入,并且该麦克风是否可用。
|
boolean |
isRcMicAvalible()
检查是否有遥控器麦克风。
|
static boolean |
isSupported(Context context)
检查该系统是否支持本SDK的底层。
|
void |
onAudioFocusChange(int focusChange) |
void |
onStartReverb() |
void |
onStopReverb() |
boolean |
pauseReverb()
暂停混音
暂停和停止的共同点是: 都会释放audio设备
不同点是: 从停止(stop)到开始(start)要比从暂停(pause)到重启(resume)要慢.
|
void |
registerControllerStateChangeListener(KaraokeController.StateListener listener)
注册控制器的状态回调
这个回调接口可以得到异步的状态变化和错误提示.
|
void |
registerDeviceStatusListener(DeviceStatusListener listener)
注册设备插拔回调, 回调所属的线程__不是__主线程。
|
void |
registerVolumeChangeListener(KaraokeController.VolumeChangeListener listener) |
boolean |
resumeReverb()
恢复混音
恢复reverb是和停止reverb的对应的, 其中关系已经在 #pauseReverb做了介绍。
|
void |
setSink(int audioSink)
设置播放源
|
void |
setSource(int audioSource)
设置录音源
|
boolean |
startReverb()
开始混音
在创建成功以后, 开始reverb, 这时候会占用AudioFlinger的audio设备.
|
boolean |
stopReverb()
停止混音, 和start reverb 对应的
|
void |
unregisterControllerStatusListener(KaraokeController.StateListener listener)
注销控制器状态回调
|
void |
unregisterDeviceStatusListener(DeviceStatusListener listener)
注销设备插拔回调
|
void |
unregisterVolumeChangeListener(KaraokeController.VolumeChangeListener listener) |
public static final int kReverbKTV
public static final int kReverbConcert
public static final int kReverbStudio
public static final int kEffectParamReverb
public static KaraokeController getInstance(Context ctx)
ctx
- Activity 和 Application的Context都是可以的,建议Application的context.public int getCurrentMasterVolume()
getMasterVolumeMax()
获得,或者通过 getCurrentMasterVolumeScale()
public int getMasterVolumeMax()
public float getCurrentMasterVolumeScale()
public static boolean isSupported(Context context)
public void setSource(int audioSource)
audioSource
- the record source, like ReverbControlNative.AUDIO_SOURCE_USB
public void setSink(int audioSink)
audioSink,
- 比如: HDMI: ReverbControlNative.AUDIO_SINK_HDMI
, 系统AV口: ReverbControlNative.AUDIO_SINK_AV
public java.util.List<java.lang.Integer> getAvalibleSinkType()
public boolean createReverb()
public void onStartReverb()
public void onStopReverb()
public boolean startReverb()
public boolean stopReverb()
public boolean pauseReverb()
public boolean resumeReverb()
public boolean closeDevice()
public void changeVoiceVolume(int percent)
percent
- 麦克风音量的百分比public void changeMusicVolume(int percent)
AudioTrackNative
创建的。
使用百分比调整麦克风的音量, 这个百分比已经是非线性的了, 所以不需要再做转换。percent
- 音量的百分比public int getAudioSource()
public boolean isExternalUsbMicAvalible()
public boolean isRcMicAvalible()
public int changeReverbType(int effect)
kReverbKTV
, kReverbConcert
, kReverbStudio
默认混响为 kReverbKTV
这个函数可以在createReverb之后任意时刻调用, 效果实时产生变化。effect
- 想要切换的混响效果, 必须是文档中提到的类型public int changeEffectParam(int type, int val)
type
- 类型, 比如kEffectParamReverb
val
- 效果的值, 值必须是在合理范围之内,不然会有IllegalArgumentException报出。public int getEffectParamMax(int effectParam) throws java.lang.IllegalArgumentException
effectParam
- 类型, 比如kEffectParamReverb
java.lang.IllegalArgumentException
public int getEffectParamMin(int effectParam) throws java.lang.IllegalArgumentException
effectParam
- 类型, 比如kEffectParamReverb
java.lang.IllegalArgumentException
public int getEffectParamValue(int effectParam) throws java.lang.IllegalArgumentException
effectParam
- 类型, 比如kEffectParamReverb
java.lang.IllegalArgumentException
public java.util.List<java.lang.Integer> getAvalibleEffectParam()
public void onAudioFocusChange(int focusChange)
public void registerDeviceStatusListener(DeviceStatusListener listener)
listener
- 回调接口public void unregisterDeviceStatusListener(DeviceStatusListener listener)
listener
- 接口public void registerControllerStateChangeListener(KaraokeController.StateListener listener)
listener
- public void unregisterControllerStatusListener(KaraokeController.StateListener listener)
listener
- public void registerVolumeChangeListener(KaraokeController.VolumeChangeListener listener)
public void unregisterVolumeChangeListener(KaraokeController.VolumeChangeListener listener)