Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
AudioDemo
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gsaiDemo
AudioDemo
Commits
46974502
Commit
46974502
authored
Aug 12, 2022
by
qiujianhui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
create gsai audio demo
parent
e35ab466
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
1054 additions
and
1 deletion
+1054
-1
README.md
README.md
+1054
-1
No files found.
README.md
View file @
46974502
AudioDemo
# 1、介绍
\ No newline at end of file
## 概述
本文档介绍了KTV系统的功能以及接口的调用,统一开放三方接口API,能够在oppo、vivo、小米的安卓13.0手机上体验震撼的K歌体验。
KTV系统能满足统一开放API在Android 13.0机器上K歌实现几乎无延时耳返(Mic数字信号直接输入IC,接着直接输出至耳机,(vivo)实验室测试值35ms);搭载多种默认经典混响和EQ均衡器音效,以及各个厂家可额外扩展的音效。
不同手机厂商支持的音效类型:【红色标记为额外扩展的音效】
| 手机 | 混响音效 | EQ均衡器音效 |
| ---- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| oppo | 0:无、1:KTV、2:剧场、3:音乐厅、4:录音棚 | 0:无、1:标准、2:浑厚、3:清脆、4:明亮 |
| vivo | 0:无、1:KTV、2:剧场、3:音乐厅、4:录音棚10: 温暖、11: 空灵、12: 3D迷幻、13: 老唱片 | 0:无、1:标准、2:浑厚、3:清脆、4:明亮10: 温暖、11: 空灵、12: 3D迷幻、13: KTV |
| 小米 | 0:无、1:KTV、2:剧场、3:音乐厅、4:录音棚 | 0:无、1:标准、2:浑厚、3:清脆、4:明亮 |
另外手机KTV提供非常小的接口库,调用简单,可使三方app快捷使用到卡拉OK效果。
如需在安卓13之前老版本集成该功能,请联系各个厂家提供方提供KTV旧方案,旧方案此前均有开放出来。
## 名词和缩写
-
KTV
Karaoke Television(卡拉ok)
-
OPPO
本文指代OPPO、OnePlus或realme手机设备
## 文档说明
本文档介绍了怎样使用KTV SDK进行应用程序开发,并给出了完整的例程。
本文是针对具有一些安卓编程经验的安卓应用程序员而写的。以下是文档中的一些约定符号:
| | |
| ---------- | -------------------------------------------------- |
|
**符号**
|
**含义**
|
|
\[
in
\]
| 表明该参数是调用时赋值的参数:输入参数 |
|
\[
out
\]
| 该参数在函数返回时被赋值:输出参数 |
|
\[
in/out
\]
| 该参数在函数调用时作为输入、函数返回时作为输出参数 |
OPPO平台接入前需要进行鉴权,详情见第4部分OPPO平台鉴权。
1.
# 接口说明
1.
## 接口简介
1. ### 接口函数列表
MediaClient客户端类API提供如下函数供调用:
| 函数名称 | 功能简介 |
| --------------------------- | ------------------------------------------------------------ |
| initialize | 初始化并获取KTV MediaClient单例。 |
| getVersion | 获取KTV SDK库版本号。 |
| isDeviceSupportKaraoke | 判断当前机器设备能否支持KTV。 |
| isAppSupportKaraoke | 应用是否支持KTV。【oppo、vivo返回默认值true,小米手机检测】补充说明:小米平台通过应用白名单控制是否支持app使用KTV功能。 若app申请支持KTV功能,请联系小米三方应用外部支持(mi-support-thirdapps@xiaomi.com)。 |
| isSupported | 应用是否支持KTV功能使用,注意此为前三个接口组合判断结果,通常来说三方只使用该接口判断是否支持。 |
| getKaraokeSupportParameters | 应用获取当前机器支持KTV的JSON参数信息,比如应用设置何种参数(AudioTrack的采样率、flag等,AudioRecord的source等),判断是否可以正常使用KTV功能。 |
| openKTVDevice | 打开KTV设备,此动作必须是刚发生在播放伴奏前。 |
| closeKTVDevice | 关闭KTV设备。 |
| setPlayFeedbackParam | 控制耳返开启/关闭接口,系统默认打开,建议无论怎么app调用都打开调用一次,排除其他app不正确调用的干扰。 |
| getPlayFeedbackParam | 获取当前耳返开关状态。 |
| setListenRecordSame | 听录一致,选择录音输出数据,建议接口调用动作应发生在openKTVDevice后与录音前。【小米不支持此功能】 |
| getListenRecordSame | 听录一致,获取当前音源的输出方式值。【仅vivo支持此功能】 |
| setMicVolParam | 设置人声音量大小。 |
| getMicVolParam | 获取当前人声音量值。 |
| setExtSpeakerParam | 控制外接音响设备开关,这个接口的开出是为了当用户使用大音响或者大功放设备K歌,此情景下啸叫厉害,故开了此接口。【仅vivo支持此功能】 |
| getExtSpeakerParam | 获取当前外接音响设备开关状态。【仅vivo支持此功能】 |
| setToneMode | 设置变声。【仅oppo支持此功能】 |
| setMixerSoundType | 设置混响效果。 |
| setEqualizerType | 设置EQ均衡器音效。 |
| getExtMixerSoundType | 扩展混响音效。 |
| getExtEqualizerType | 扩展EQ均衡器音效。 |
MediaClientUtil客户端辅助类API提供如下函数供调用:
| 函数名称 | 功能简介 |
| ---------------------- | ------------------------------------------------------------ |
| isOsVivo | 是否为vivo手机设备 |
| isOsOppo | 是否为OPPO手机设备 |
| isOsXiaoMi | 是否为小米手机设备 |
| isKtvNewApiSupported | 应用是否支持KTV新架构API功能使用,和直接调用MediaClient的【isSupported】结果一致 |
| isTargetAudioSupported | 目标客户端AudioRecord或AudioTrack的参数是否能够使用KTV新API功能 |
KtvSupportInfo客户端辅助类API,该类信息是从【getKaraokeSupportParameters】的JSON数据解析而来,表示当前机器支持KTV AudioTrack和AudioRecord的JSON参数信息,该类目前不直接提供功能函数给三方使用,只是用于辅助判断目标客户端AudioRecord或AudioTrack的参数是否能够使用KTV新API相关功能。
### 开发包组件
-
Android平台
| 开发组件 | 组件组成 | 说明 |
| --------- | :----------------------------------------------------------- | ------------------------------------------------------------ |
| 开放API类 | MediaClient.javaMediaClientUtil.javaKtvSupportInfo.java | 接口类声明 |
| 运行时库 | gsai.sdk:media-client:1.0.0-SNAPSHOTgsai.sdk:mediastub:1.0.0-SNAPSHOT | SDK依赖 补充:1、添加 URL地址和版本1.0.0根据release最新版本修改2、如何依赖库代码片段请查看第4部分内容 |
### 开发包支持情况
| 系统 | 支持的安卓版本号 | 备注 |
| ------- | ---------------- | ------------------------------------------------------------ |
| Android | 13.0 | 小米平台支持:小米12S、小米12S Pro、小米12S Ultra和Android T以上版本的高通平台机型 |
1.
## 函数调用
1.
### initialize
-
函数原型
public static MediaClient initialize(Context context)
-
功能
进程级的初始化操作,初始化并获取KTV MediaClient单例用于功能API调用。
-
参数
-
context
\[
in
\]
上下文,必现非空,建议传入全局Context,如使用getApplicationContext()。
-
返回值
静态函数调用,返回KTV MediaClient单例:
| 返回值 | 意义 |
| --------------- | -------------- |
| MediaClient单例 | 函数执行成功。 |
-
说明
初始化单例函数必须在调用其他函数之前调用,可多线程调用。
-
示例
MediaClient mc = MediaClient.initialize(getApplicationContext());
-
参见
略
### getVersion
-
函数原型
public int getVersion()
-
功能
获取KTV SDK库版本号。
-
参数
无。
-
返回值
如果函数调用成功返回大于或等于10000,表示KTV API版本可用,否则返回-1,可能的值如下:
| 返回值 | 意义 |
| ------ | -------------------------------------------- |
| 10000 | 返回值大于或等于10000,表示KTV API版本可用。 |
| -1 | 该KTV API版本不可用 |
-
说明
使用该返回值判断KTV API版本是否可用。
-
示例
// KTV sdk版本号
int version = mMediaClient.getVersion();
Log.d(TAG, "version is: " + version);
//不支持的版本,三方可选择自行适配(部分接口如果后续进行了拓展需要)
if (version
\<
10000) {
//其他替代方案或界面提示
Log.d(TAG, "KTV version is not supported");
return;
} else {
Log.d(TAG, " KTV version is supported");
}
-
参见
isSupported
### isDeviceSupportKaraoke
-
函数原型
public boolean isDeviceSupportKaraoke()
-
功能
判断当前机器设备能否支持KTV。
-
参数
无。
-
返回值
可能的值如下:
| 返回值 | 意义 |
| ------ | ------ |
| true | 支持 |
| false | 不支持 |
-
说明
使用该返回值判断当前机器设备能否支持KTV。
-
示例
// 判断当前机器设备能否支持KTV
boolean isSupportedForDevice = mMediaClient.isDeviceSupportKaraoke();
if (isSupportedForDevice) {
Log.d(TAG, "KTV is supported for current device");
} else {
Log.d(TAG, "KTV is not supported for current device");
return;
}
-
参见
isSupported
### isAppSupportKaraoke
-
函数原型
public boolean isAppSupportKaraoke(String appName)
-
功能
应用是否支持KTV。【小米手机检测,OV返回默认值true】
补充说明:小米平台通过应用白名单控制是否支持app使用KTV功能。 若app申请支持KTV功能,请联系小米三方应用外部支持(mi-support-thirdapps@xiaomi.com)。
-
参数
-
appName
\[
in
\]
APP包名,非空。
-
返回值
可能的值如下:
| 返回值 | 意义 |
| ------ | ------ |
| true | 支持 |
| false | 不支持 |
-
说明
使用该返回值判断应用是否支持KTV。
-
示例
// 判断KTV是否支持当前APP
boolean isSupportedForApp = mMediaClient.isAppSupportKaraoke(getApplicationContext().getPackageName());
if (isSupportedForApp) {
Log.d(TAG, "KTV is supported for current APP");
} else {
Log.d(TAG, "KTV is not supported for current device");
return;
}
-
参见
isSupported
### isSupported
-
函数原型
public boolean isSupported()
-
功能
应用是否支持KTV功能使用,注意此为前三个接口【getVersion】、【isDeviceSupportKaraoke】、【isAppSupportKaraoke】组合判断结果,因此通常来说三方只使用该接口判断是否支持。
-
参数
无
-
返回值
可能的值如下:
| 返回值 | 意义 |
| ------ | ------ |
| true | 支持 |
| false | 不支持 |
-
说明
使用该返回值判断应用是否支持KTV功能使用,即KTV整个环境是否可用。
-
示例
boolean isNewApiSupported = client.isSupported();
if (DEBUG) {
if (isNewApiSupported) {
Log.d(TAG, "KTV is supported for the new architecture of KTV APIs, you can use them");
} else {
Log.d(TAG, "KTV is not supported for the new architecture of KTV APIs, " +
"you CAN NOT use them");
}
}
-
参见
getVersion、isDeviceSupportKaraoke、isAppSupportKaraoke
### getKaraokeSupportParameters
-
函数原型
public String getKaraokeSupportParameters()
-
功能
应用获取当前机器支持KTV的JSON参数信息,比如应用设置何种参数(AudioTrack的采样率、flag等,AudioRecord的source等),判断是否可以正常使用KTV功能。
-
参数
无
-
返回值
可能的值如下:
| 返回值 | 意义 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| { "audioTrackParam":
[
{ "streamType":"3", "sampleRate":"48000", "format":"2", "flag":"8" }
]
, "audioRecordParam":
[
{ "streamType":"default", "sampleRate":"48000", "format":"2", "flag":"0x8", "source":"1" }
]
, "isSupportListenRecordSame":false, "isSupportExtSpeakerParam":false, "isSupportToneMode":false} | 参数格式定义:1、若支持任意参数, value置为"default";2、没有返回的key, value为默认值"default";3、所有value给十进制数值的字符串形式, 例如AUDIO_SOURCE_MIC需要返回"1", AUDIO_OUTPUT_FLAG_DEEP_BUFFER需要返回"8"。若该手机厂商不支持某个接口API则将配置不支持false,例如不支持setToneMode接口则设置isSupportToneMode:false。4、
***\*注意:只在此处声明不支持的接口,JSON参数中没有声明的接口都表示支持\***
*
|
| null | 空值,KTV API不支持使用。默认都不会为空值 |
-
说明
该返回值JSON信息表示当前机器支持KTV的JSON参数信息,比如应用设置目标参数(AudioTrack的采样率、flag等,AudioRecord的source等),判断是否可以正常使用KTV功能。
**注意:此JSON参数中只声明不支持的接口API,JSON参数中没有声明的接口都表示支持。**
-
示例
String ktvSupportInfoJson = mMediaClient.getKaraokeSupportParameters();
Log.d(TAG, "KTV ktvSupportInfoJson: " + ktvSupportInfoJson);
KtvSupportInfo supportInfo = new Gson().fromJson(ktvSupportInfoJson, KtvSupportInfo.class);
Log.d(TAG, "KTV isSupportListenRecordSame: " + supportInfo.isSupportListenRecordSame);
Log.d(TAG, "KTV isSupportExtSpeakerParam: " + supportInfo.isSupportExtSpeakerParam);
Log.d(TAG, "KTV isSupportToneMode: " + supportInfo.isSupportToneMode);
KtvSupportInfo.TrackSupportInfo targetTrackInfo =
new KtvSupportInfo.TrackSupportInfo("3", "48000", "2", "8");
Log.d(TAG, "KTV targetTrackInfo: " + targetTrackInfo.toString());
if (!MediaClientUtil.isTargetAudioSupported(supportInfo, targetTrackInfo)) {
return;
}
// track equals
KtvSupportInfo.RecordSupportInfo targetRecordInfo =
new KtvSupportInfo.RecordSupportInfo("default", "48000", "2", "8", "1");
Log.d(TAG, "KTV targetRecordInfo: " + targetRecordInfo.toString());
if (!MediaClientUtil.isTargetAudioSupported(supportInfo, targetRecordInfo)) {
return;
}
// record equals
// Anything you can do loudly with KTV
-
参见
无
### openKTVDevice
-
函数原型
public void openKTVDevice()
-
功能
打开KTV设备,此动作必须是刚发生在播放伴奏前。
-
参数
无
-
返回值
无
-
示例
略;
-
参见
closeKTVDevice
### closeKTVDevice
-
函数原型
public void closeKTVDevice()
-
功能
关闭KTV设备。
-
参数
无
-
返回值
无
-
示例
略;
-
参见
openKTVDevice
### setPlayFeedbackParam
-
函数原型
public void setPlayFeedbackParam(int param)
-
功能
控制耳返开启/关闭接口,系统默认打开,建议无论怎么app调用都打开调用一次,排除其他app不正确调用的干扰。
-
参数
-
param
\[
in
\]
> 设置当前耳返开关状态:0 关闭,1 开启
-
返回值
无
-
说明
控制耳反开关功能,在【openKTVDevice】前后调用均可。
小米仅支持在 openKTVDevice后调用 setPlayFeedbackParam, 否则设置不生效。
-
示例
略
-
参见
> getPlayFeedbackParam
-
函数原型
public int getPlayFeedbackParam()
-
功能
获取当前耳返开关状态。
-
参数
> 无
-
返回值
可能的值如下:
| 返回值 | 意义 |
| ------ | ---------------------- |
| 0 | 开关未打开 |
| 1 | 开关已打开 |
| -1 | 当前KTV该API接口不可用 |
-
说明
判断当前耳返开关状态
-
示例
略
-
参见
> setPlayFeedbackParam
### setListenRecordSame
-
函数原型
public void setListenRecordSame(int param)
-
功能
听录一致,选择录音输出数据,建议接口调用动作应发生在openKTVDevice后与录音前。【仅小米不支持此功能】
-
参数
-
param
\[
In
\]
传入参数为录音数据输出类型,类型为:【此功能不同手机厂商支持情况不同,如下】
| 手机厂商 | 类型 | 说明 |
| ---------- | ---- | ----------------------------------------------------------- |
| oppo、vivo | 0 | 录音输出为原始录音数据 |
| oppo | 1 | 录音输出为录音+应用playback数据,就是耳返数据(直播场景用) |
| vivo | 2 | 录音输出为经过算法音效后的录音数据 |
-
返回值
无
-
说明
该函数建议调用动作应发生在openKTVDevice后与录音前。
若设备不支持,则该API接口不可用。
若不支持则2.2.6中JSON支持参数中设置" isSupportListenRecordSame":false
-
示例
略
-
参见
> getListenRecordSame
### getListenRecordSame
-
函数原型
public int getListenRecordSame()
-
功能
听录一致,获取当前音源的输出方式值。【仅vivo支持此功能】
-
参数
无
-
返回值
听录一致,获取当前音源的输出方式值,可能的值如下:
【此功能不同手机厂商支持情况不同】
| 手机厂商 | 返回值 | 意义 |
| ---------- | ------ | ----------------------------------------------------------- |
| oppo、vivo | 0 | 录音输出为原始录音数据 |
| oppo | 1 | 录音输出为录音+应用playback数据,就是耳返数据(直播场景用) |
| vivo | 2 | 录音输出为经过算法音效后的录音数据 |
| oppo、vivo | -1 | 当前KTV该API接口不可用 |
-
说明
若设备不支持,则该API接口不可用
若不支持则2.2.6中JSON支持参数中设置" isSupportListenRecordSame":false
-
示例
略
-
参见
> setListenRecordSame
### setMicVolParam
-
函数原型
public void setMicVolParam(int param)
-
功能
设置人声音量大小。
-
参数
-
param
\[
in
\]
设置人声音量大小值范围:0
\~
15
-
返回值
无
-
说明
设置录音声音音量大小值。
-
示例
略
-
参见
getMicVolParam
### getMicVolParam
-
函数原型
public int getMicVolParam()
-
功能
获取当前人声音量值。
-
参数
无
-
返回值
可能的值如下:
| 返回值 | 意义 |
| ------ | ----------------------------------- |
| 0~15 | 获取当前设置的KTV录音声音音量大小值 |
| -1 | 当前KTV该API接口不可用 |
-
说明
获取当前设置的KTV录音声音音量大小值,范围:0
\~
15
-
示例
略
-
参见
setMicVolParam
### setExtSpeakerParam
-
函数原型
public void setExtSpeakerParam(int param)
-
功能
控制外接音响设备开关,这个接口的开出是为了当用户使用大音响或者大功放设备K歌,此情景下啸叫厉害,故开了此接口。【仅vivo支持此功能】
-
参数
-
param
\[
in
\]
0:关 1:开
-
返回值
无
-
说明
控制外接音响设备开关状态:0:关 1:开。
若设备不支持,则该API接口不可用。
若不支持则2.2.6中JSON支持参数中设置"isSupportExtSpeakerParam":false
-
示例
略
-
参见
getExtSpeakerParam
### getExtSpeakerParam
-
函数原型
public int getExtSpeakerParam()
-
功能
获取当前外接音响设备开关状态。【仅vivo支持此功能】
-
参数
无
-
返回值
可能的值如下:
| 返回值 | 意义 |
| ------ | ---------------------- |
| 0 | 开 |
| 1 | 关 |
| -1 | 当前KTV该API接口不可用 |
-
说明
获取当前外接音响设备开关状态,若设备不支持,则该API接口不可用。
若不支持则2.2.6中JSON支持参数中设置"isSupportExtSpeakerParam":false
-
示例
略
-
参见
setExtSpeakerParam
### setToneMode
-
函数原型
public void setToneMode(int toneValue)
-
功能
设置变声类型。【仅OPPO支持此功能】
-
参数
-
toneValue
\[
in
\]
范围( -12
\~
0
\~
12 )
-
返回值
无
-
说明
设置变声类型,如果不支持则2.2.6中JSON支持参数中设置"isSupportToneMode":false
-
示例
略
-
参见
1.
### setMixerSoundType
-
函数原型
public void setMixerSoundType(int param)
-
功能
设置混响效果。
-
参数
-
param
\[
in
\]
混响音效效果类型:
1.
Reverb default type ( 0:无、1:KTV、2:剧场、3:音乐厅、4:录音棚 )
2.
For vivo extensions as bellow: 【vivo设备上额外提供更多的效果类型】
> 10: 温暖, 11: 空灵, 12: 3D迷幻, 13: 老唱片
-
返回值
无
-
说明
设置混响音效效果类型。
**除了默认混响效果0-4类型,vivo设备**
上通过调用【getExtMixerSoundType】接口额外获取更多提供的可用效果类型:10: 温暖, 11: 空灵, 12: 3D迷幻, 13: 老唱片。
示例
略
-
参见
> getExtMixerSoundType
### getExtMixerSoundType
-
函数原型
public int
\[\]
getExtMixerSoundType()
-
功能
获取扩展混响音效类型ID数组。【可为空】
1.
For VIVO extensions as bellow: 【vivo设备上额外提供更多的效果类型】
> 10: 温暖, 11: 空灵, 12: 3D迷幻, 13: 老唱片
-
参数
无
-
返回值
可能的值如下:
| 返回值 | 意义 |
| ------ | ---------------------------- |
| int
[]
| 扩展混响音效类型ID数组 |
| null | 空值,当前KTV该API接口不可用 |
-
说明
返回扩展混响音效类型ID数组。
**除了默认混响效果0-4类型,vivo设备上**
通过调用该函数接口额外获取更多提供的可用效果类型:10: 温暖, 11: 空灵, 12: 3D迷幻, 13: 老唱片。
-
示例
略
-
参见
setMixerSoundType
### setEqualizerType
-
函数原型
public void setEqualizerType(int equalizerType)
-
功能
设置EQ均衡器音效类型。
-
参数
-
equalizerType
\[
in
\]
EQ均衡器音效效果类型:
3.
EQ default type ( 0:无、1:标准、2:浑厚、3:清脆、4:明亮 )
4.
For VIVO extensions as bellow: 【vivo设备上额外提供更多的效果类型】
> 10: 温暖, 11: 空灵, 12: 3D迷幻, 13: KTV
-
返回值
无
-
说明
设置EQ均衡器音效效果类型。
**除了默认EQ均衡器效果0-4类型,vivo设备**
上通过调用【getExtEqualizerType】接口额外获取更多提供的可用效果类型:10: 温暖, 11: 空灵, 12: 3D迷幻, 13: KTV。
-
示例
略
-
参见
> getExtEqualizerType
### getExtEqualizerType
-
函数原型
public int
\[\]
getExtMixerSoundType()
-
功能
获取扩展EQ均衡器音效类型ID数组。【可为空】
2.
For VIVO extensions as bellow: 【vivo设备上额外提供更多的效果类型】
> 10: 温暖, 11: 空灵, 12: 3D迷幻, 13: KTV
-
参数
无
-
返回值
可能的值如下:
| 返回值 | 意义 |
| ------ | ---------------------------- |
| int
[]
| 扩展EQ均衡器音效类型ID数组 |
| null | 空值,当前KTV该API接口不可用 |
-
说明
返回扩展EQ均衡器音效类型ID数组。
**除了默认EQ均衡器效果0-4类型,vivo设备上**
通过调用该函数接口额外获取更多提供的可用效果类型:10: 温暖, 11: 空灵, 12: 3D迷幻, 13: KTV。
-
示例
略
-
参见
setEqualizerType
# 辅助类说明
由于MediaClientUtil和KtvSupportInfo辅助类功能简单,在第二部分的【接口函数列表】中基本已阐述,这里就不详细参数了,参考demo中实现使用即可。
# API使用说明
**1、基本使用流程(推荐流程,也可以根据自己的流程适配)**
1)获取MediaClient单例
2)isSupported判断应用是否支持KTV功能使用
3)演唱开始,先打开KTV系统,openKTVDevice
4)设置相关配置(vivo支持在openKTVDevice前设置)
setListenRecordSame 录音数据输出类型
setMixerSoundType 混响音效类型
setEqualizerType EQ音效类型
setPlayFeedbackParam 耳返开关
setMicVolParam 耳返音量大小
setExtSpeakerParam 设置外接设备项
5)再开启播放,最后开启录音 【小米仅支持deep buffer播放方式的KTV效果】
6)演唱结束,先关闭播放、录音
7)再closeKTVDevice 关闭KTV系统
8)该流程具体细节推荐参考Demo KTV中相关代码
**2、KTV统一接口API,可直接使用**
需要应用权限配置:
android.permission.MODIFY_AUDIO_SETTINGS
android.permission.RECORD_AUDIO
OPPO平台需要额外权限:
\<
uses-permission android:name="com.oplus.ocs.permission.third"/
\>
\<
queries
\>
> \<package android:name="com.coloros.karaoke"\>\</package\>
>
> \<package android:name="com.coloros.ocs.opencapabilityservice"\>\</package\>
>
> \<package android:name="com.oplus.ocs"\>\</package\>
\<
/queries
\>
**3、OPPO 平台鉴权**
1)登录OPPO开放平台申请鉴权码,请参考
[
*官方指南*
](
https://open.oppomobile.com/new/developmentDoc/info?id=11152
)
在应用的AndroidManifest.xml的配置如下标签,该标签和activity标签是同级别标签
\<
meta-data
android:name="com.coloros.ocs.media.AUTH_CODE"
android:value="请替换为自身授权码" /
\>
2.
在应用开启时注册耳返服务,设定悬浮球显示逻辑;通过 addOnOnConnectionSucceedListener 发起鉴权请求,可在鉴权成功的回调中使用openKTVDevice请求耳返服务。
如果鉴权没有成功,openKTVDevice调用没有效果。例如:
**4、Gradle如何依赖aar库**
示例:
implementation 'gsai.sdk:media-client:1.0.0-SNAPSHOT'
compileOnly 'gsai.sdk:mediastub:1.0.0-SNAPSHOT'
说明:此处为第一个版本示例,版本号1.0.0需根据release最新版本修改
版本更新说明
| 版本号 | 更新内容 |
| ------ | --------------- |
| 1.0.0 | KTV系统接口统一 |
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment