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
2 years ago
by
qiujianhui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
create gsai audio demo
parent
e35ab466
Changes
1
Show 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
\ No newline at end of file
# 1、介绍
## 概述
本文档介绍了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
This diff is collapsed.
Click to expand it.
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