接入龙图安卓SDK的游戏及应用的android客户端开发者。
使用此文档内接口,需要先接入龙图安卓SDK。
1 接入龙图安卓SDK后,需要配置抖音SDK需要的依赖库。
2 然后将 抖音SDKLibrary/libs目录下的jar 和 aar 复制到你的工程的
Application Module/libs文件夹(没有的话须手动创建),
3 复制 抖音SDKLibrary/res 目录下的内容到工程的res目录下
4 将以下代码添加到您app的build.gradle中:
//必须 :该库因为SDK内部使用//noinspection GradleCompatibleimplementation 'com.android.support:cardview-v7:28.0.0'//必须:这个库是加载一些广告中gif文件 所以需要依赖implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.18'//必须:这个库是内部SDK用到 需要依赖implementation 'com.google.code.gson:gson:2.8.6'//必须:这个库保证版本在24以上即可//noinspection GradleCompatibleimplementation 'com.android.support:support-v4:26.1.0'
5 添加资源到 AndroidManifest.xml 内
<!--必须要有的权限--><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /><uses-permission android:name="android.permission.GET_TASKS" /><!--最好能提供的权限--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!-- 如果有视频相关的广告且使用textureView播放,请务必添加,否则黑屏 --><uses-permission android:name="android.permission.WAKE_LOCK" /><!--录屏前台服务配置--><uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
6 添加抖音配置到 AndroidManifest.xml 内
<providerandroid:name="com.bytedance.sdk.openadsdk.TTFileProvider"android:authorities="${applicationId}.TTFileProvider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths" /></provider><providerandroid:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"android:authorities="${applicationId}.TTMultiProvider"android:exported="false" /><!--若使用录屏功能且targetsdkversion为29时必须配置,否则不用配置--><serviceandroid:name="com.ss.union.sdk.videoshare.service.RecordMediaProjectService"android:enabled="true"android:foregroundServiceType="mediaProjection" /><uses-libraryandroid:name="org.apache.http.legacy"android:required="false" />
7 添加抖音参数,配置到 AndroidManifest.xml 内
抖音参数需要找运营同学获取
| 参数key | 参数说明 | 是否必选 | 获取方式 |
|---|---|---|---|
| LTDouYinAppId | 抖音appid | 必选 | 运营提供 |
| LTDouYinChannel 渠道信息 | 必选 | 运营提供 | |
| LTDouYinAppName | app名称 | 必选 | 运营提供 |
| LTDouYinAppTestVison | 该配置为 optional 如果申请了AB测试 那么可以配置,否则可以忽略 | 可选 | 运营提供 |
<meta-dataandroid:name="LTDouYinAppId"android:value="" /><meta-dataandroid:name="LTDouYinChannel"android:value="" /><meta-dataandroid:name="LTDouYinAppName"android:value="" /><!-- 没有AB测试可以不添加此项 --><meta-dataandroid:name="LTDouYinAppTestVison"android:value="" />
8 添加url scheme:
并将以下代码添加到您app的build.gradle中:
【您应用的深度转化url_scheme】 需要找运营获取。
// 在android的defaultConfig中添加manifestPlaceholders.put("APPLOG_SCHEME", "【您应用的深度转化url_scheme】".toLowerCase())
9 适配Android10
前提:如果您的应用需要适配Android10(即设置targetSdkVersion=29) ##### 1.2.5.1 沙盒特性适配 因为Android10增加了沙盒特性,为保证在Android 10手机上功能正常,请在AndroidManifest.xml``application节点添加如下配置:
<applicationandroid:requestLegacyExternalStorage="true">
调用抖音功能,需要先获取功能实列。
LTBase_DouYin_Charging mLTBase_DouYin_Charging = (LTBase_DouYin_Charging)LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseSDKGetChannelsObject();
游戏调用此接口后,可以展示抖音激励视频。
| 参数 | 参数说明 | 参数类型 | 是否必选 |
|---|---|---|---|
| 广告ID | 抖音分配的广告ID | String | 必选 |
| 广告展示方式 | 固定值: “1” 竖屏 “2” 横屏 | int | 必选 |
| 奖励道具的名称 | 用户看完广告奖励的道具的名称 | String | 必选 |
| 奖励道具的数量 | 用户看完广告奖励的道具的数量 | int | 必选 |
| 回调 | 视频播放结果回调 | LTBase_DouYin_showDyAdListener | 必选 |
/*** 加载抖音激励广告** @param codeId 广告ID* @param orientation 广告展示方向 LGBaseConfigAdDTO.ORIENTATION_HORIZONTAL 横屏* LGBaseConfigAdDTO.ORIENTATION_VERTICAL 竖屏* @param rewardName 奖励道具的名称* @param rewardAmount 奖励道具的数量* @param listener 回调*/public void LT_DouYin_loadDyAd(String codeId, int orientation, String rewardName, int rewardAmount, LTBase_DouYin_showDyAdListener listener);
/*** 展示抖音激励视频*/mLTBase_DouYin_Charging.LT_DouYin_loadDyAd("945073805", LGBaseConfigAdDTO.ORIENTATION_VERTICAL,"金币", 100, mLTBase_DouYin_showDyAdListener);
接收到的数据为激励视频 播放结果。
| 接口 | 接口说明 |
|---|---|
| onShowDyAdFail | 视频激励失败 |
| onShowDyAdSuc | 视频激励成功 |
| onShowDyAdError | 视频激励错误 |
| onShowDyAdSkip | 视频激励跳过 |
/*** 激励视频结果回调*/private LTBase_DouYin_showDyAdListener mLTBase_DouYin_showDyAdListener = new LTBase_DouYin_showDyAdListener() {@Overridepublic void onShowDyAdFail() {Logs.i(LOGTAG, " 视频激励失败 ");Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 视频激励失败 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onShowDyAdSuc() {Logs.i(LOGTAG, " 视频激励成功 ");Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 视频激励成功 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onShowDyAdError() {Logs.i(LOGTAG, " 视频激励错误 ");Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 视频激励错误 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onShowDyAdSkip() {Logs.i(LOGTAG, " 视频激励跳过 ");Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 视频激励跳过 ", Toast.LENGTH_SHORT).show();}};
检测当前登录的用户,是否为渠道的游客账号。
可以用于判断是否展示绑定接口。
/*** 检查当前用户是否为游客,暂时只为抖音开放* @return true为游客, false 为非游客*/public boolean LTBaseCheckUserisgGuest();
LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseCheckUserisgGuest();
抖音的游客账号,绑定为抖音正式账号。
/*** 渠道的绑定账号,用于渠道需要主动触发绑定的情况** @param listener 结果回回调*/public void LTBaseChannelBindAccount(LTBaseAccountBindListener listener)
/*** 绑定账号*/LTBaseSDK.getInstance(LTBase_Demo_MainActivity.mMainActivity).LTBaseChannelBindAccount(mLTBaseAccountBindListener);
接收到的数据为激励视频 播放结果。
| 接口 | 接口说明 |
|---|---|
| LTBaseBindSuccess | 绑定成功 |
| LTBaseBindFail | 绑定失败 |
/*** 绑定结果*/private LTBaseAccountBindListener mLTBaseAccountBindListener = new LTBaseAccountBindListener() {@Overridepublic void LTBaseBindSuccess(int i, String s) {Logs.i(LOGTAG, " 绑定成功 ");Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 绑定成功 ", Toast.LENGTH_SHORT).show();}@Overridepublic void LTBaseBindFail(int i, String s) {Logs.i(LOGTAG, "绑定失败");Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, "绑定失败 ", Toast.LENGTH_SHORT).show();}};
检测当前设置是否支持录屏
/*** 是否允许屏幕录制。** @return true 支持录屏 false 不支持录屏*/public boolean LT_DouYin_checkSupScreenRecord()
mLTBase_DouYin_Charging.LT_DouYin_checkSupScreenRecord();
录制当前游戏屏幕
| 参数值 | 参数说明 |
|---|---|
| LGScreenRecordOperate.START | 开始 |
| LGScreenRecordOperate.PAUSE | 暂停 |
| LGScreenRecordOperate.RESUME | 继续 |
| LGScreenRecordOperate.STOP | 结束 |
/*** 录制屏幕:支持开始、暂停、继续、结束* <p>* 注意:* 只有调用结束录制屏幕,才会生成合法的视频文件,中断录屏流程将不会生成合法视频文件*/public void LT_DouYin_SupSreenReoocrd(LGScreenRecordOperate operate, LTBase_DouYin_screenRecordListener listener) ;
// 录屏开始 举例mLTBase_DouYin_Charging.LT_DouYin_SupSreenReoocrd(LGScreenRecordOperate.START,mLTBase_DouYin_screenRecordListener);// 录屏结束 举例mLTBase_DouYin_Charging.LT_DouYin_SupSreenReoocrd(LGScreenRecordOperate.STOP,mLTBase_DouYin_screenRecordListener);
接收到的数据为激励视频 播放结果。
| 接口 | 接口说明 | 参数说明 |
|---|---|---|
| onScreenRecordSuc | 录制成功 | recordFilePath 录制成功后的视频地址 |
| onScreenRecordFail | 录制失败 |
/*** 抖音录屏结果*/private LTBase_DouYin_screenRecordListener mLTBase_DouYin_screenRecordListener = new LTBase_DouYin_screenRecordListener() {@Overridepublic void onScreenRecordFail() {Logs.i(LOGTAG, " 录制失败 ");Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 录制失败 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onScreenRecordSuc(String recordFilePath) {Logs.i(LOGTAG, " 录制成功 recordFilePath = " + recordFilePath);mRecordFilePath = recordFilePath;Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 录制成功 ", Toast.LENGTH_SHORT).show();}};
打开交叉推广, 打开以后是抖音的一个悬浮广告框, 需要在抖音后台配置才有作用
/*** 交叉推广* @param x 展示坐标* @param y 展示坐标*/public void LT_DouYin_showOverlapping_Recommend(int x, int y)
// 打开交叉推广mLTBase_DouYin_Charging.LT_DouYin_showOverlapping_Recommend(0, 0);
关闭交叉推广框
// 关闭交叉推广public void LT_DouYin_closeOverlapping_Recommend()
// 关闭交叉推广mLTBase_DouYin_Charging.LT_DouYin_closeOverlapping_Recommend();
由抖音Ai系统对视频进行编辑,
编辑过程不可见,回调会返回编辑进度,游戏需要自行展示编辑中进度条。
| 参数 | 参数说明 | 参数类型 | 是否必选 |
|---|---|---|---|
| videoPath | 需要编辑的视频路径 | String | 必选 |
| isShare | 是否吧编辑以后的视频进行分享 true 分享 false 不分享 | boolean | 必选 |
| 回调 | 编辑结果回调 | LTBase_DouYin_aiEditorVideoShareListener | 必选 |
/*** 视频编辑** @param videoPath 视频路径* @param isShare 是否分享 true 分享 false 不分享* @param listener 结果回调*/public void LT_Douyin_aiEditorVideoShare(String videoPath, boolean isShare, LTBase_DouYin_aiEditorVideoShareListener listener);
// 视频编辑mLTBase_DouYin_Charging.LT_Douyin_aiEditorVideoShare(mRecordFilePath, false,mLTBase_DouYin_aiEditorVideoShareListener);
接收到的数据为激励视频 播放结果。
| 接口 | 接口说明 | 参数说明 |
|---|---|---|
| onScreenRecordSuc | 视频编辑成功 | aiEditedVideoPath 编辑成功后的视频地址 ,stayInDouYin 分享成功是否留在抖音 |
| onEditingProgress | 视频编辑进度 | progress 视频编辑进度 |
| onAiEditorVideoFail | 视频编辑失败 |
/*** 抖音视频编辑结果回调*/private LTBase_DouYin_aiEditorVideoShareListener mLTBase_DouYin_aiEditorVideoShareListener= new LTBase_DouYin_aiEditorVideoShareListener() {@Overridepublic void onAiEditorVideoFail() {Logs.i(LOGTAG, " 视频编辑失败 ");mAiScreenReocrdIng = false;Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 视频编辑失败 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onAiEditorVideoSuc(String aiEditedVideoPath, boolean stayInDouYin) {Logs.i(LOGTAG, " 视频编辑成功 ");Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 视频编辑成功 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onEditingProgress(int progress) {Logs.i(LOGTAG, " 视频编辑进度 progress = " + progress);}};
检查当前设备是否支持分享
/*** 是否允许分享** @return true 支持,false 不支持*/public boolean LT_DouYin_checkSupDouYinShare()
// 是否允许分享mLTBase_DouYin_Charging.LT_DouYin_checkSupDouYinShare();
抖音分享:支持视频和图片分享
LGDouYinShareDTO 参数介绍
| 参数 | 参数说明 | 参数类型 | 是否必选 |
|---|---|---|---|
| type | 分享类型,LGDouYinShareDTO.Type.VIDEO 视频, LGDouYinShareDTO.Type.PICTURE 图片 | int | 必选 |
| pathList | 资源列表,图片支持多张图片,视频只能添加一个 | ArrayList | 必选 |
| 回调 | 编辑结果回调 | LTBase_DouYin_ShareListener | 必选 |
/*** 抖音分享接口** @param douYinShareDTO 分享参数* @param listener 分享回调*/public void LT_DouYin_SupDouYinShare(LGDouYinShareDTO douYinShareDTO, LTBase_DouYin_ShareListener listener);
// 抖音分享。LGDouYinShareDTO mLGDouYinShareDTO = new LGDouYinShareDTO();mLGDouYinShareDTO.type = LGDouYinShareDTO.Type.VIDEO;mLGDouYinShareDTO.pathList.add(mRecordFilePath);mLTBase_DouYin_Charging.LT_DouYin_SupDouYinShare(mLGDouYinShareDTO, mLTBase_DouYin_ShareListener);
接收到的数据为激励视频 播放结果。
| 接口 | 接口说明 | 参数说明 |
|---|---|---|
| onShareSuc | 分享成功 | stayInDouYin 分享成功是否留在抖音 |
| onShareSaveAlbum | 分享成功后,视频保存路径 | filePathList 视频或者图片保存路径列表 |
| onShareFail | 分享失败 |
/*** 抖音分享回调*/private LTBase_DouYin_ShareListener mLTBase_DouYin_ShareListener = new LTBase_DouYin_ShareListener() {@Overridepublic void onShareFail() {Logs.i(LOGTAG, " 分享失败 ");Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 分享失败 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onShareSuc(boolean stayInDouYin) {Logs.i(LOGTAG, " 分享成功 stayInDouYin = " + stayInDouYin);Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 分享成功", Toast.LENGTH_SHORT).show();}@Overridepublic void onShareSaveAlbum(ArrayList filePathList) {Logs.i(LOGTAG, " 分享成功后视频保存成功 ");Toast.makeText(LTBase_Demo_MainActivity.mMainActivity, " 分享成功后视频保存成功 ", Toast.LENGTH_SHORT).show();}};
发送抖音日志,自定义日志
| 参数 | 参数说明 |
|---|---|
| eventName | 事件名,由运营同学分配 |
| jsonObject | 事件参数 ,json格式, 由运营同学分配 |
/*** 发送自定义事件** @param eventName 点位名称* @param jsonObject 自定义事件数据,可以为null*/public void LT_DouYin_setOnEventV3(String eventName, JSONObject jsonObject)
// 发送一条 自定义事件JSONObject eventJson = new JSONObject();try {eventJson.put("sample1", "sample1");eventJson.put("sample2", "sample2");} catch (Exception e) {e.printStackTrace();}mLTBase_DouYin_Charging.LT_DouYin_setOnEventV3("diyevent", eventJson);
游戏调用此接口后,缓存抖音激励视频。
如果游戏不自己缓存,播放激励视频的时候会自动加载并缓存视频。
| 参数 | 参数说明 | 参数类型 | 是否必选 |
|---|---|---|---|
| 广告ID | 抖音分配的广告ID | String | 必选 |
| 广告展示方式 | 固定值: “1” 竖屏 “2” 横屏 | int | 必选 |
| 回调 | 视频播放结果回调 | LTBase_Douyin_RewardVideoAdListener | 必选 |
/*** 缓存抖音激励视频** @param codeid 广告ID* @param orientation 广告展示方向 LGBaseConfigAdDTO.ORIENTATION_HORIZONTAL 横屏* LGBaseConfigAdDTO.ORIENTATION_VERTICAL 竖屏*/public void LT_Douyin_CacheRewardVideoAd(String codeid, int orientation, LTBase_Douyin_RewardVideoAdListener listener);
/*** 缓存抖音激励视频*/mLTBase_DouYin_Charging.LT_Douyin_CacheRewardVideoAd("945073805", LGBaseConfigAdDTO.ORIENTATION_VERTICAL, mLTBase_Douyin_RewardVideoAdListener);
接收到的数据为激励视频 缓存结果。
| 接口 | 接口说明 |
|---|---|
| onError | 视频激励失败 |
| onRewardVideoAdLoadSuc | 视频激励成功 |
/*** 缓存视频回调*/private LTBase_Douyin_RewardVideoAdListener mLTBase_Douyin_RewardVideoAdListener= new LTBase_Douyin_RewardVideoAdListener() {@Overridepublic void onError(int code, String message) {Logs.i(LOGTAG, " RewardVideoAdListener onError code:" + code + " message:" + message);}@Overridepublic void onRewardVideoAdLoadSuc() {Logs.i(LOGTAG, " RewardVideoAdListener onRewardVideoAdLoadSuc");}};
游戏调用此接口后,可以注册 广告下载事件回调。
主要是用于统计玩家点击广告以后,下载广告内app的事件。
| 参数 | 参数说明 | 参数类型 | 是否必选 |
|---|---|---|---|
| 回调 | 下载回调 | LTBase_DouYin_DownloadListener | 必选 |
/*** 广告下载事件*/public void setDouYin_DownloadListener(LTBase_DouYin_DownloadListener listener);
/*** 注册广告下载事件回调*/mLTBase_DouYin_Charging.setDouYin_DownloadListener(mLTBase_DouYin_DownloadListener);
接收到的数据为下载事件流程。
| 接口 | 接口说明 |
|---|---|
| onIdle | 下载准备 |
| onDownloadActive | 下载中 |
| onDownloadPaused | 下载暂停 |
| onDownloadFailed | 下载失败 |
| onDownloadFinished | 下载完成 |
| onInstalled | 安装完成 |
/*** 下载事件回调*/private LTBase_DouYin_DownloadListener mLTBase_DouYin_DownloadListener = new LTBase_DouYin_DownloadListener() {@Overridepublic void onIdle() {Logs.i(LOGTAG, " 可以下载了");}@Overridepublic void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {Logs.i(LOGTAG, " 下载中");}@Overridepublic void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {Toast.makeText(LTBase_Demo_MainActivity.mMainActivity," 下载暂停 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {Toast.makeText(LTBase_Demo_MainActivity.mMainActivity," 下载失败 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onDownloadFinished(long totalBytes, String fileName, String appName) {Toast.makeText(LTBase_Demo_MainActivity.mMainActivity," 下载完成 ", Toast.LENGTH_SHORT).show();}@Overridepublic void onInstalled(String fileName, String appName) {Toast.makeText(LTBase_Demo_MainActivity.mMainActivity," 安装完成 ", Toast.LENGTH_SHORT).show();}};

上海中清龙图软件有限公司