android9.0 minsdk28
请在集成sdk前,将以下app相关信息提供于惠诚。
- application_id (包名)
java,kotlin
dependencies {
...
implementation(fileTree("libs"))
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
implementation("com.squareup.okhttp3:okhttp:4.10.0")
}
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
如在非https环境下,请在AndroidManifest.xml中:
<application
android:usesCleartextTraffic="true"
>
- 授权当前用户
- 以当前用户身份(userid)登录
- 获取所有疗愈类型
- 初始化 Therapy并监听播放回掉
- 根据用户选择的疗愈相关配置参数,获取方案
- 根据获取的方案json字符串,预备Therapy
- 预备完成后,播放
AuthorizeApi().authorize(
channelID,//渠道id
new IResponseCallback<Boolean>() {
@Override
public void onRequestSucceed(
Boolean isAuthorizeSuccessful //渠道授权是否成功
) {
}
@Override
public void onRequestFailed(@NonNull Call call, @NonNull Exception exception) {
}
});
未授权情况下调用,抛出AuthException (不建议频繁调用。)
//未授权情况下调用,抛出AuthException
AuthorizeApi().login(
userID, //用户标识
channelID,//渠道id
context,//上下文
new IResponseCallback<Boolean>() {
@Override
public void onRequestSucceed(Boolean isLoginSuccessful) {
}
@Override
public void onRequestFailed(@NonNull Call call, @NonNull Exception exception) {
}
});
// 无需授权
TherapyApi().fetchAllCures(
channelID,// 渠道id
new IResponseCallback<List<Cure>>() {
@Override
public void onRequestFailed(@NonNull Call call, @NonNull Exception exception) {
、 }
@Override
public void onRequestSucceed(List<Cure> cures) {
//返回所有疗愈类型
、 }
});
未授权情况下调用,抛出AuthException。
异地登录抛出:code为10026的HCException。
如果主类型下没有分类则不传;否则一定要传其中一个。
/*param*/
TherapyApi().fetchCureSolution(
channelID,//渠道id
userID,//当前用户标识
cure,//疗愈主类型
classification,//疗愈分类,如果主类型下没有分类则不传;否则一定要传其中一个。
duration,//疗愈时长
trackNum,//轨道数量,目前就是1
level,//疗愈相关程度
context,// 上下文
new IResponseCallback<String>() {
@Override
public void onRequestFailed(@NonNull Call call,
@NonNull Exception exception) {
}
@Override
public void onRequestSucceed(String solutionJSON) {
//方案的json字符串
}
});
Therapy(
"secret", // 需要由开发人员事先提供applicationId于惠诚
"app id", // 需要由开发人员事先提供applicationId于惠诚
context //应用程序上下文
)
注:尽量避免懒加载初始化sdk,防止因sdk未初始化导致的其他接口调用失败。
therapy.setPlayCallback(new IPlayerCallback() {
//播放进度回掉
//参数 currentProgress:当前进度
@Override
public void onTick(long currentProgress) {
}
//播放完成回掉
@Override
public void onFinished() {
Log.e(TAG,"onFinished");
}
//播放启动回掉
@Override
public void onPlay() {
Log.e(TAG,"onPlay");
}
//播放暂停回掉
@Override
public void onPause() {
Log.e(TAG,"onPause");
}
//播放过程中出现异常
@Override
public void onErrorWhenPlaying(@NonNull Exception e) {
Log.e(TAG,"onPause" + e.toString());
}
});
Therapy().prepare(
@NotNull String solutionJSON, //方案 in json
@NotNull IPrepareCallback callback//完成方案预加载后的回掉
)
therapy.prepare(solution, new IPrepareCallback() {
//方案预加载完成
@Override
public void onPredownloadDone() {
//可在方案预加载完成后立刻播放
therapy.play();
}
//方案加载全部完成
@Override
public void onAllDone(@Nullable Exception e) {
if (e == null) {
//方案全部加载完成后,且无异常。
therapy.play();
return;
}
Log.e(TAG,"onAllDone" + e.toString());
therapy.stop();
}
});
//需要事先完成方案预加载。
//如果当前正在播放,立刻return
Therapy().play()
// 暂停后,调用play继续播放
Therapy().pause()
Therapy().stop()
//返回:缓存总大小
long Therapy().getCacheSize()
Therapy().clearCache()
bool Therapy().getEnable()
bool Therapy().isPlaying()
class Cure {
int id; // id
String title; // title
String illustrate; //说明
List<Long> cureDurationOptions; //相关时间选项
List<Level> levels; //相关程度选项
List<Classification> classifications; //相关子项目(可能为空)
}