# HXSDK **Repository Path**: hx-sdk-android/hxsdk ## Basic Information - **Project Name**: HXSDK - **Description**: 明日彗星广告SDK - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-12 - **Last Updated**: 2026-03-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HXSDK #### 介绍 明日彗星广告SDK # **Android集成文档说明** ## **SDK配置** ### 1、添加sdk文件依赖配置 在您的项目目录下build.gradle或setting.gradle文件中添加以下内容 ``` maven { url 'https://gitee.com/hx-sdk-android/hxsdk/raw/master/maven' } ``` ### 2、添加sdk文件依赖配置 在您的app目录下build.gradle文件中添加以下内容 ``` dependencies { //彗星SDK implementation 'com.hx.sdk:hx-sdk:3.1.21' //PTG SDK 不集成PTG广告时不需要集成 implementation 'com.hx.sdk:hx-ptg:2.9.3' //Ubix SDK 不集成Ubix广告时不需要集成 implementation 'com.hx.sdk:hx-ubix:2.8.0' //ICON广告必须集成canary和Glide, 不集成ICON广告时不需要集成 implementation 'com.hx.sdk.canary:canary-sdk:2.2.0' //Mobile SDK 不集成Mobile广告时不需要集成 implementation 'com.hx.sdk:hx-mobile:3.4.7' //YT SDK 不集成YT广告时不需要集成 implementation 'com.hx.sdk:hx-yt:3.14.11.2' //LH SDK 不集成LH广告时不需要集成 implementation 'com.hx.sdk:hx-lh:3.0.2.0' implementation 'com.google.code.gson:gson:2.8.6' implementation 'com.squareup.okhttp3:okhttp:3.12.1' implementation 'com.github.bumptech.glide:glide:4.12.0' // 最新版本参考官网 } ``` ### 3、配置混淆 -dontwarn com.hxad.sdk.** -keep class com.hxad.sdk.**{*;} //不集成Mobile广告时不需要集成 -keep class cj.mobile.**{*;} -keep interface cj.mobile.**{*;} ## **SDK 初始化** 注意:广告请求之前必须先调用SDK初始化方法 ### 1、初始化说明 HXInitConfig.Builder builder = new HXInitConfig.Builder(); //APPID由运营人员提供 builder.setAppId("71003"); //隐私合规设置 builder.setPrivacyConfig(new HXPrivacyConfig() { }); HXSDK.init(this, builder.build()); ### 2、HXInitConfig接口说明
方法 参数 说明
setAppId String 设置应用的id
isUseTextureView Boolean 是否使用TextureView播放视频
setAge Integer 设置用户年龄
setGender/td> Integer 设置用户性别,0 未知 1 男 2 女,默认0
isOpenDebug Boolean 是否开启debug开关
setPrivacyConfig HXPrivacyConfig 设置聚合隐私控制开关
### 3、HXPrivacyConfig接口说明
方法 说明
boolean canUseLocation() 是否允许SDK使用地理位置信息
HXLocation getLocation() 可传入位置信息
boolean canUseWifiState() 是否允许SDK使用wifi信息
boolean canUseWriteExternal() 是否允许SDK使用存储卡权限
boolean canUseMacAddress() 是否允许SDK使用Mac地址
String getMacAddress() 可传入MacAddress
boolean canUseOaid() 是否允许sdk请求广告时获取oaid
String getDevOaid() 可传入设备Oaid
boolean canUsePhoneState() 是否允许SDK主动使用手机硬件参数
String getDevImei() 可传入设备Imei
boolean canUseAppList() 是否允许SDK获取APP安装列表
List getAppList() 可传入应用安装信息
boolean canUseAndroidId() 是否允许SDK使用AndroidId
boolean canUsePhoneState() 是否允许SDK主动使用手机硬件参数
String getAndroidId() 可传入设备ID
int getPersonalizedState() 传入个性化开关状态 0 开启个性化广告 1 表示关闭个性化广告
int getProgrammaticRecommendState() 程序化广告状态 0 开启程序化广告 1 表示关闭程序化广告
boolean canUseSensor() 是否允许传感器信息
### 4、HXLocation说明
方法 说明
longitude 经度
latitude 纬度
## **广告请求说明** ### HXRequestConfig 广告请求参数说明
方法 参数 说明
setSpaceId String 设置广告位id
setTimeout Integer 设置超时时间
setWidth Integer 设置广告请求宽度,按照显示广告容器的实际宽度传递
setHeight Integer 设置广告请求高度,按照显示广告容器的实际高度传递
setCount Integer 设置广告请求数量,开屏广告只支持1条
## **开屏广告** ### 1、创建HXRequestConfig对象 HXRequestConfig.Builder requestConfig = new HXRequestConfig.Builder(); //设置广告位ID, 广告位ID由运营人员提供 requestConfig.setSpaceId(mSpaceId); //设置超时时间 requestConfig.setTimeout(5000); //设置广告请求宽度,按照显示广告容器的实际宽度传递 requestConfig.setWidth(1080); //设置广告请求高度,按照显示广告容器的实际高度传递 requestConfig.setHeight(1920); ### 2、创建HXSplashAd对象 HXSplashAd mHXSplashAd = new HXSplashAd(this, requestConfig.build(), new HXSplashListener() { @Override public void onAdLoadSucceed() { } @Override public void onAdLoadFailed(HXErrorInfo info) { } @Override public void onAdExposed() { } @Override public void onAdExposeFailed(HXErrorInfo info) { } @Override public void onAdClicked() { } @Override public void onAdClosed() { } @Override public void onAdSkipped() { } }); ### 3、请求广告 mHXSplashAd.loadAd() ### 4、显示广告 收到广告请求成功回调后,调用mHXSplashAd.showAd(container)方法显示广告 ### 5、销毁广告 开屏广告页面销毁后,调用mHXSplashAd.destroy()方法销毁广告 ### 6、接口说明 #### 6.1 HXSplashAd 接口说明
方法名 说明
HXSplashAd(Context context, HXRequestConfig config, HXSplashListener listener) 构造方法,广告相关状态会通过listener通知开发者。参数说明:context(环境变量)、config(广告请求参数)、listener(广告状态监听器)。
void loadAd() 请求广告
boolean isValid() 广告是否有效,无效广告将无法展示
void showAd(ViewGroup container) 展示广告, 参数container(显示广告的容器)
int getEcpm() 获取广告价格,单位分
void sendWinNotice(Map info) 发生竞胜通知,参数info(竞胜信息,key:winPrice, value:竞胜价格 )
void sendLossNotice(Map info) 发生竞败通知,参数info(竞败信息,key:winPrice, value:竞胜方价格,key:lossReason, value: 失败原因 0 其它 1 低价格 2 超时)
void destroy() 销毁广告
#### 6.2 HXSplashListener开屏广告请求事件监听回调说明
方法名称 说明
void onAdLoadSucceed() 告加载成功回调
void onAdLoadFailed(HXErrorInfo info) ⼴告加载失败回调
void onAdClicked() ⼴告点击回调
void onAdExposed() ⼴告显示回调
void onAdExposeFailed(HXErrorInfo info) ⼴告展示失败回调
void onAdClosed() ⼴告消失回调(倒计时完成)
void onAdSkipped() 点击倒计时跳过回调
#### 6.3 HXErrorInfo 错误信息说明
方法 说明
getCode() 失败错误码
getMessage() 失败错误信息
### 7、接入代码示例 ``` public class HXSplashActivity extends Activity { private String TAG = "HXSDKDemo"; private FrameLayout mContainerFl; private HXSplashAd mHXSplashAd; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); mContainerFl = findViewById(R.id.ad_container_fl); loadAd(); } private void loadAd() { HXRequestConfig.Builder requestConfig = new HXRequestConfig.Builder(); requestConfig.setSpaceId("10000001"); requestConfig.setTimeout(5000); requestConfig.setWidth(ScreenUtil.getScreenWidth(this)); requestConfig.setHeight(ScreenUtil.getScreenHeight(this)); mHXSplashAd = new HXSplashAd(this, requestConfig.build(), new HXSplashListener() { @Override public void onAdLoadSucceed() { Log.e(TAG, TAG + " loadSplash onAdLoadSucceed ecpm:" + mHXSplashAd.getEcpm()); if (mContainerFl != null) { mHXSplashAd.showAd(mContainerFl); } } @Override public void onAdLoadFailed(HXErrorInfo info) { Log.e(TAG, TAG + " loadSplash onAdLoadFailed info:" + info.toString()); startMainActivity(); } @Override public void onAdExposed() { Log.e(TAG, TAG + " loadSplash onAdExposed"); } @Override public void onAdExposeFailed(HXErrorInfo info) { Log.e(TAG, TAG + " loadSplash onAdExposeFailed info:" + info.toString()); startMainActivity(); } @Override public void onAdClicked() { Log.e(TAG, TAG + " loadSplash onAdClicked"); } @Override public void onAdClosed() { Log.e(TAG, TAG + " loadSplash onAdClosed"); startMainActivity(); } @Override public void onAdSkipped() { Log.e(TAG, TAG + " loadSplash onAdSkipped"); startMainActivity(); } }); mHXSplashAd.loadAd(); } private void startMainActivity() { Intent intent = new Intent(this, MainActivity.class); startActivity(intent); } @Override protected void onDestroy() { if (mHXSplashAd != null) { mHXSplashAd.destroy(); } super.onDestroy(); } } ``` ## **原生(模板)广告** ### 1、创建HXRequestConfig对象 HXRequestConfig.Builder requestConfig = new HXRequestConfig.Builder(); //设置广告位ID, 广告位ID由运营人员提供 requestConfig.setSpaceId(mSpaceId); //设置超时时间 requestConfig.setTimeout(5000); ### 2、创建HXNativeAd对象 HXNativeAd mHXNativeAd = new HXNativeAd(this, requestConfig.build(), new HXNativeAdListener() { @Override public void onAdLoadSucceed(List data) { } @Override public void onAdLoadFailed(HXErrorInfo info) { } }); ### 3、请求广告 mHXNativeAd.loadAd() ### 4、显示广告 #### 4.1 获取单条广告数据HXNativeAdData 收到广告请求成功回调后,调用data.get(0)方法显示广告 #### 4.2 注册交互 // 收到广告请求成功回调后,调用hxNativeAdData.setInteractionListener方法注册交互 hxNativeAdData.setInteractionListener(new HXNativeAdInteractionListener() { @Override public void onAdClicked() { } @Override public void onAdExposed() { } @Override public void onAdExposedFailed() { } @Override public void onAdClosed() { } @Override public void onRenderFail(HXErrorInfo info) { } @Override public void onRenderSuccess(View view, float width, float height) { } }); #### 4.3 渲染广告 收到广告请求成功回调后,调用hxNativeAdData.render()方法渲染广告 #### 4.4 添加广告到视图 收到广告广告渲染成功(onRenderSuccess)回调后,把回调的view添加到视图上 ### 5、销毁广告 原生广告页面销毁后,调用mHXNativeAd.destroy()方法销毁广告 ### 6、接口说明 #### 6.1 HXNativeAd 接口说明
方法名 说明
HXNativeAd(Context context, HXRequestConfig config, HXNativeAdListener listener) 构造方法,广告相关状态会通过listener通知开发者。参数说明:context(环境变量)、config(广告请求参数)、listener(广告状态监听器)。
void loadAd() 请求广告
boolean isValid() 广告是否有效,无效广告将无法展示
void showAd(Context context) 展示广告, 参数context(环境变量)
int getEcpm() 获取广告价格,单位分
void sendWinNotice(Map info) 发生竞胜通知,参数info(竞胜信息,key:winPrice, value:竞胜价格 )
void sendLossNotice(Map info) 发生竞败通知,参数info(竞败信息,key:winPrice, value:竞胜方价格,key:lossReason, value: 失败原因 0 其它 1 低价格 2 超时)
void destroy() 销毁广告
#### 6.2 HXNativeAdListener原生广告请求事件监听回调说明
方法名称 说明
void onAdLoadSucceed(List data) 告加载成功回调
void onAdLoadFailed(HXErrorInfo info) ⼴告加载失败回调
#### 6.3 HXNativeAdData广告数据说明
方法名称 说明
void setInteractionListener(HXNativeAdInteractionListener listener) 设置广告交互
void render() 渲染广告
View getNativeAdView() 获取渲染好的广告View
void destroy() 销毁广告
#### 6.4 HXNativeAdInteractionListener说明
方法名称 说明
void onAdClicked() ⼴告点击回调
void onAdExposed() ⼴告显示回调
void onAdExposeFailed() ⼴告展示失败回调
void onAdClosed() ⼴告消失回调
void onRenderSuccess(View view, float width, float height) ⼴告渲染成功回调,view(渲染好的view)、width(渲染好的view宽度,可能为0)、height(渲染好的view高度,可能为0)
void onRenderFail(HXErrorInfo info) ⼴告渲染失败
#### 6.5 HXErrorInfo 错误信息说明
方法 说明
getCode() 失败错误码
getMessage() 失败错误信息
### 7、接入代码示例 ``` public class HXNativeActivity extends Activity { private String TAG = "HXSDKDemo"; private TextView loadTv, showTv; private FrameLayout mAdContainerFl; private HXNativeAd mHXNativeAd; private List mHXNativeAdData; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_native); loadTv = findViewById(R.id.native_load_tv); showTv = findViewById(R.id.native_show_tv); mAdContainerFl = findViewById(R.id.native_ad_container_fl); showTv.setVisibility(View.GONE); loadTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showTv.setVisibility(View.GONE); loadNativeAd(); } }); showTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { renderNativeAd(); } }); } /** * 请求HX渠道广告 */ private void loadNativeAd() { if (mHXNativeAd != null) { mHXNativeAd.destroy(); mHXNativeAd = null; } if (mAdContainerFl != null) { mAdContainerFl.removeAllViews(); } HXRequestConfig.Builder requestConfig = new HXRequestConfig.Builder(); requestConfig.setSpaceId("10000002"); requestConfig.setTimeout(5000); requestConfig.setWidth(ScreenUtil.getScreenWidth(this)); requestConfig.setHeight(0); //高度传0自适应 mHXNativeAd = new HXNativeAd(this, requestConfig.build(), new HXNativeAdListener() { @Override public void onAdLoadSucceed(List data) { Log.e(TAG, TAG + " loadNativeAd onAdLoadSucceed "); mHXNativeAdData = data; showTv.setVisibility(View.VISIBLE); } @Override public void onAdLoadFailed(HXErrorInfo info) { Log.e(TAG, TAG + " loadNativeAd onAdLoadFailed info:" + info.toString()); } }); mHXNativeAd.loadAd(); } private void renderNativeAd() { if (mHXNativeAdData == null || mHXNativeAdData.isEmpty()) { return; } HXNativeAdData hxNativeAdData = mHXNativeAdData.get(0); hxNativeAdData.setInteractionListener(new HXNativeAdInteractionListener() { @Override public void onAdClicked() { Log.e(TAG, TAG + " loadNativeAd onAdClicked"); } @Override public void onAdExposed() { Log.e(TAG, TAG + " loadNativeAd onAdExposed"); } @Override public void onAdExposedFailed() { Log.e(TAG, TAG + " loadNativeAd onAdExposedFailed"); } @Override public void onAdClosed() { Log.e(TAG, TAG + " loadNativeAd onAdClosed"); showTv.setVisibility(View.GONE); if (mAdContainerFl != null) { mAdContainerFl.removeAllViews(); } } @Override public void onRenderFail(HXErrorInfo info) { Log.e(TAG, TAG + " loadNativeAd onRenderFail info:" + info.toString()); } @Override public void onRenderSuccess(View view, float width, float height) { Log.e(TAG, TAG + " loadNativeAd onRenderSuccess"); if (mAdContainerFl != null) { mAdContainerFl.removeAllViews(); mAdContainerFl.addView(view); } } }); hxNativeAdData.render(); } } ``` ## **插屏广告** ### 1、创建HXRequestConfig对象 HXRequestConfig.Builder requestConfig = new HXRequestConfig.Builder(); //设置广告位ID, 广告位ID由运营人员提供 requestConfig.setSpaceId(mSpaceId); //设置超时时间 requestConfig.setTimeout(5000); ### 2、创建HXInterstitialAd对象 HXInterstitialAd mHXInterstitialAd = new HXInterstitialAd(this, requestConfig.build(), new HXInterstitialListener() { @Override public void onAdLoadSucceed() { } @Override public void onAdLoadFailed(HXErrorInfo info) { } @Override public void onAdExposed() { } @Override public void onAdExposeFailed(HXErrorInfo info) { } @Override public void onAdClicked() { } @Override public void onAdClosed() { } }); ### 3、请求广告 mHXInterstitialAd.loadAd() ### 4、显示广告 收到广告请求成功回调后,调用mHXInterstitialAd.showAd(activity)方法显示广告 ### 5、销毁广告 插屏广告页面销毁后,调用mHXInterstitialAd.destroy()方法销毁广告 ### 6、接口说明 #### 6.1 HXInterstitialAd 接口说明
方法名 说明
HXInterstitialAd(Context context, HXRequestConfig config, HXInterstitialListener listener) 构造方法,广告相关状态会通过listener通知开发者。参数说明:context(环境变量)、config(广告请求参数)、listener(广告状态监听器)。
void loadAd() 请求广告
boolean isValid() 广告是否有效,无效广告将无法展示
void showAd(Context context) 展示广告, 参数context(环境变量)
int getEcpm() 获取广告价格,单位分
void sendWinNotice(Map info) 发生竞胜通知,参数info(竞胜信息,key:winPrice, value:竞胜价格 )
void sendLossNotice(Map info) 发生竞败通知,参数info(竞败信息,key:winPrice, value:竞胜方价格,key:lossReason, value: 失败原因 0 其它 1 低价格 2 超时)
void destroy() 销毁广告
#### 6.2 HXInterstitialListener插屏广告请求事件监听回调说明
方法名称 说明
void onAdLoadSucceed() 告加载成功回调
void onAdLoadFailed(HXErrorInfo info) ⼴告加载失败回调
void onAdClicked() ⼴告点击回调
void onAdExposed() ⼴告显示回调
void onAdExposeFailed(HXErrorInfo info) ⼴告展示失败回调
void onAdClosed() ⼴告消失回调
#### 6.3 HXErrorInfo 错误信息说明
方法 说明
getCode() 失败错误码
getMessage() 失败错误信息
### 7、接入代码示例 ``` public class HXInterstitialActivity extends Activity { private String TAG = "HXSDKDemo"; private TextView loadTv, showTv; private HXInterstitialAd mHXInterstitialAd; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_interstitial); loadTv = findViewById(R.id.interstitial_load_tv); showTv = findViewById(R.id.interstitial_show_tv); showTv.setVisibility(View.GONE); loadTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showTv.setVisibility(View.GONE); loadAd(); } }); showTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mHXInterstitialAd != null) { mHXInterstitialAd.showAd(HXInterstitialActivity.this); } } }); } private void loadAd() { if (mHXInterstitialAd != null) { mHXInterstitialAd.destroy(); mHXInterstitialAd = null; } HXRequestConfig.Builder requestConfig = new HXRequestConfig.Builder(); requestConfig.setSpaceId("10000004"); requestConfig.setTimeout(5000); mHXInterstitialAd = new HXInterstitialAd(this, requestConfig.build(), new HXInterstitialListener() { @Override public void onAdLoadSucceed() { Log.e(TAG, TAG + " loadInterstitial onAdLoadSucceed ecpm:" + mHXInterstitialAd.getEcpm()); if (showTv != null) { showTv.setVisibility(View.VISIBLE); } } @Override public void onAdLoadFailed(HXErrorInfo info) { Log.e(TAG, TAG + " loadInterstitial onAdLoadFailed info:" + info.toString()); } @Override public void onAdExposed() { Log.e(TAG, TAG + " loadInterstitial onAdExposed"); } @Override public void onAdExposeFailed(HXErrorInfo info) { Log.e(TAG, TAG + " loadInterstitial onAdExposeFailed info:" + info.toString()); } @Override public void onAdClicked() { Log.e(TAG, TAG + " loadInterstitial onAdClicked"); } @Override public void onAdClosed() { Log.e(TAG, TAG + " loadInterstitial onAdClosed"); if (showTv != null) { showTv.setVisibility(View.GONE); } } }); mHXInterstitialAd.loadAd(); } @Override protected void onDestroy() { if (mHXInterstitialAd != null) { mHXInterstitialAd.destroy(); } super.onDestroy(); } } ``` ## **激励视频广告** ### 1、创建HXRequestConfig对象 HXRequestConfig.Builder requestConfig = new HXRequestConfig.Builder(); //设置广告位ID, 广告位ID由运营人员提供 requestConfig.setSpaceId(mSpaceId); //设置超时时间 requestConfig.setTimeout(5000); ### 2、创建HXRewardVideoAd对象 HXRewardVideoAd mHXRewardVideoAd = new HXRewardVideoAd(this, requestConfig.build(), new HXRewardVideoListener() { @Override public void onReward(boolean isReward, int amount, Map extraInfo) { } @Override public void onVideoComplete() { } @Override public void onVideoError() { } @Override public void onAdLoadSucceed() { } @Override public void onAdLoadFailed(HXErrorInfo info) { } @Override public void onAdExposed() { } @Override public void onAdExposeFailed(HXErrorInfo info) { } @Override public void onAdClicked() { } @Override public void onAdClosed() { } }); ### 3、请求广告 mHXRewardVideoAd.loadAd() ### 4、显示广告 收到广告请求成功回调后,调用mHXRewardVideoAd.showAd(activity)方法显示广告 ### 5、销毁广告 激励视频广告页面销毁后,调用mHXRewardVideoAd.destroy()方法销毁广告 ### 6、接口说明 #### 6.1 HXRewardVideoAd 接口说明
方法名 说明
HXRewardVideoAd(Context context, HXRequestConfig config, HXRewardVideoListener listener) 构造方法,广告相关状态会通过listener通知开发者。参数说明:context(环境变量)、config(广告请求参数)、listener(广告状态监听器)。
void loadAd() 请求广告
boolean isValid() 广告是否有效,无效广告将无法展示
void showAd(Context context) 展示广告, 参数context(环境变量)
int getEcpm() 获取广告价格,单位分
void sendWinNotice(Map info) 发生竞胜通知,参数info(竞胜信息,key:winPrice, value:竞胜价格 )
void sendLossNotice(Map info) 发生竞败通知,参数info(竞败信息,key:winPrice, value:竞胜方价格,key:lossReason, value: 失败原因 0 其它 1 低价格 2 超时)
void destroy() 销毁广告
#### 6.2 HXRewardVideoListener激励视频广告请求事件监听回调说明
方法名称 说明
void onAdLoadSucceed() 告加载成功回调
void onAdLoadFailed(HXErrorInfo info) ⼴告加载失败回调
void onAdClicked() ⼴告点击回调
void onAdExposed() ⼴告显示回调
void onAdExposeFailed(HXErrorInfo info) ⼴告展示失败回调
void onAdClosed() ⼴告消失回调
void onReward(boolean isReward, int amount,Map extraInfo) ⼴获取奖励回调,isRewar(奖励是否有效)、amount(奖励数量)、extraInfo(扩展信息)
void onVideoComplete() 广告播放完成
void onVideoError() 广告播放失败
#### 6.3 HXErrorInfo 错误信息说明
方法 说明
getCode() 失败错误码
getMessage() 失败错误信息
### 7、接入代码示例 ``` public class HXRewardVideoActivity extends Activity { private String TAG = "HXSDKDemo"; private TextView loadTv, showTv; private HXRewardVideoAd mHXRewardVideoAd; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_reward_video); loadTv = findViewById(R.id.reward_video_load_tv); showTv = findViewById(R.id.reward_video_show_tv); showTv.setVisibility(View.GONE); loadTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showTv.setVisibility(View.GONE); loadAd(); } }); showTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mHXRewardVideoAd != null) { mHXRewardVideoAd.showAd(HXRewardVideoActivity.this); } } }); } private void loadAd() { if (mHXRewardVideoAd != null) { mHXRewardVideoAd.destroy(); mHXRewardVideoAd = null; } HXRequestConfig.Builder requestConfig = new HXRequestConfig.Builder(); requestConfig.setSpaceId("10000005"); requestConfig.setTimeout(5000); mHXRewardVideoAd = new HXRewardVideoAd(this, requestConfig.build(), new HXRewardVideoListener() { @Override public void onReward(boolean isReward, int amount, Map extraInfo) { Log.e(TAG, TAG + " loadRewardVideo onReward"); } @Override public void onVideoComplete() { Log.e(TAG, TAG + " loadRewardVideo onVideoComplete"); } @Override public void onVideoError() { Log.e(TAG, TAG + " loadRewardVideo onVideoError"); } @Override public void onAdLoadSucceed() { Log.e(TAG, TAG + " loadRewardVideo onAdLoadSucceed ecpm:" + mHXRewardVideoAd.getEcpm()); if (showTv != null) { showTv.setVisibility(View.VISIBLE); } } @Override public void onAdLoadFailed(HXErrorInfo info) { Log.e(TAG, TAG + " loadRewardVideo onAdLoadFailed info:" + info.toString()); } @Override public void onAdExposed() { Log.e(TAG, TAG + " loadRewardVideo onAdExposed"); } @Override public void onAdExposeFailed(HXErrorInfo info) { Log.e(TAG, TAG + " loadRewardVideo onAdExposeFailed info:" + info.toString()); } @Override public void onAdClicked() { Log.e(TAG, TAG + " loadRewardVideo onAdClicked"); } @Override public void onAdClosed() { Log.e(TAG, TAG + " loadRewardVideo onAdClosed"); if (showTv != null) { showTv.setVisibility(View.GONE); } } }); mHXRewardVideoAd.loadAd(); } @Override protected void onDestroy() { if (mHXRewardVideoAd != null) { mHXRewardVideoAd.destroy(); } super.onDestroy(); } } ``` ## **ICON广告** ### 1、创建HXRequestConfig对象 HXRequestConfig.Builder requestConfig = new HXRequestConfig.Builder(); //设置广告位ID, 广告位ID由运营人员提供 requestConfig.setSpaceId(mSpaceId); //设置超时时间 requestConfig.setTimeout(5000); ### 2、创建HXIconAd对象 HXIconAd mHXIconAd = new HXIconAd(this, requestConfig.build(), new HXIconListener() { @Override public void onAdLoadSucceed() { } @Override public void onAdLoadFailed(HXErrorInfo info) { } @Override public void onAdClicked() { } @Override public void onAdExposed() { } @Override public void onAdExposeFailed(HXErrorInfo info) { } @Override public void onAdClosed() { } }); ### 3、请求广告 mHXIconAd.loadAd() ### 4、显示广告 收到广告请求成功回调后,调用mHXIconAd.showAd(container)方法显示广告 ### 5、销毁广告 ICON广告页面销毁后,调用mHXIconAd.destroy()方法销毁广告 ### 6、接口说明 #### 6.1 HXIconAd 接口说明
方法名 说明
HXIconAd(Context context, HXRequestConfig config, HXIconListener listener) 构造方法,广告相关状态会通过listener通知开发者。参数说明:context(环境变量)、config(广告请求参数)、listener(广告状态监听器)。
void loadAd() 请求广告
boolean isValid() 广告是否有效,无效广告将无法展示
void showAd(ViewGroup container) 展示广告, 参数container(显示广告的容器)
int getEcpm() 获取广告价格,单位分
void sendWinNotice(Map info) 发生竞胜通知,参数info(竞胜信息,key:winPrice, value:竞胜价格 )
void sendLossNotice(Map info) 发生竞败通知,参数info(竞败信息,key:winPrice, value:竞胜方价格,key:lossReason, value: 失败原因 0 其它 1 低价格 2 超时)
void destroy() 销毁广告
#### 6.2 HXIconListener ICON广告请求事件监听回调说明
方法名称 说明
void onAdLoadSucceed() 告加载成功回调
void onAdLoadFailed(HXErrorInfo info) ⼴告加载失败回调
void onAdClicked() ⼴告点击回调
void onAdExposed() ⼴告显示回调
void onAdExposeFailed(HXErrorInfo info) ⼴告展示失败回调
void onAdClosed() ⼴告消失回调(倒计时完成)
#### 6.3 HXErrorInfo 错误信息说明
方法 说明
getCode() 失败错误码
getMessage() 失败错误信息
### 7、接入代码示例 ``` public class HXIconActivity extends Activity { private String TAG = "HXSDKDemo"; private TextView loadTv, showTv; private FrameLayout mAdContainerFl; private HXIconAd mHXIconAd; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_icon); loadTv = findViewById(R.id.icon_load_tv); showTv = findViewById(R.id.icon_show_tv); mAdContainerFl = findViewById(R.id.icon_ad_container_fl); showTv.setVisibility(View.GONE); loadTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showTv.setVisibility(View.GONE); loadIconAd(); } }); showTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mHXIconAd != null && mAdContainerFl != null) { mHXIconAd.showAd(mAdContainerFl); } } }); } /** * 请求HX渠道广告 */ private void loadIconAd() { if (mHXIconAd != null) { mHXIconAd.destroy(); mHXIconAd = null; } if (mAdContainerFl != null) { mAdContainerFl.removeAllViews(); } HXRequestConfig.Builder requestConfig = new HXRequestConfig.Builder(); requestConfig.setSpaceId("11111235"); requestConfig.setTimeout(5000); mHXIconAd = new HXIconAd(this, requestConfig.build(), new HXIconListener() { @Override public void onAdLoadSucceed() { Log.e(TAG, TAG + " loadIconAd onAdLoadSucceed "); showTv.setVisibility(View.VISIBLE); } @Override public void onAdLoadFailed(HXErrorInfo info) { Log.e(TAG, TAG + " loadIconAd onAdLoadFailed info:" + info.toString()); } @Override public void onAdClicked() { Log.e(TAG, TAG + " loadIconAd onAdClicked "); } @Override public void onAdExposed() { Log.e(TAG, TAG + " loadIconAd onAdExposed "); } @Override public void onAdExposeFailed(HXErrorInfo info) { Log.e(TAG, TAG + " loadIconAd onAdExposeFailed info:" + info.toString()); } @Override public void onAdClosed() { Log.e(TAG, TAG + " loadIconAd onAdClosed "); if (showTv != null) { showTv.setVisibility(View.GONE); } if (mAdContainerFl != null) { mAdContainerFl.removeAllViews(); } } }); mHXIconAd.loadAd(); } @Override protected void onDestroy() { super.onDestroy(); if (mHXIconAd != null) { mHXIconAd.destroy(); } mHXIconAd = null; } } ``` ## SDK错误码
错误码 说明
2000 context为空
2001 广告位ID错误
2002 无配置数据
3001 ⼴告显示失败,container为空
3002 ⼴告显示失败,广告为空
3003 ⼴告显示失败,广告无效
3004 ⼴告显示失败,未知异常
## 版本更新记录
版本 发布日期 更新日志
3.1.21 2026-03-23 1、适配canary渠道
3.1.20 2026-03-11 1、适配GM渠道
3.1.19 2026-01-09 1、适配GM渠道
3.1.18 2025-12-24 1、更新适配Modbile渠道SDK
3.1.17 2025-11-24 1、新增YT渠道SDK
3.1.16 2025-11-20 1、新增LH渠道SDK
3.1.14 2025-10-11 1、功能优化; 2、更新适配渠道SDK
3.1.13 2025-08-29 1、功能优化; 2、更新适配渠道SDK
3.1.11 2025-08-20 1、功能优化; 2、bug Fix;3、新增渠道
3.1.9 2025-08-12 1、功能优化;2、添加透传扩展参数
3.1.8 2025-07-23 1、功能优化
3.1.6 2025-07-08 1、添加ICON广告
# 通过TaKu集成彗星SDK步骤 ## 1、Android集成步骤 ### 1.1 添加sdk文件依赖配置 在您的项目目录下build.gradle或setting.gradle文件中添加以下内容 ``` maven { url 'https://gitee.com/hx-sdk-android/hxsdk/raw/master/maven' } ``` ### 1.2 添加sdk文件依赖配置 在您的app目录下build.gradle文件中添加以下内容 ``` dependencies { //HX SDK implementation 'com.hx.sdk:hx-sdk:3.1.21' //Taku 适配器 implementation 'com.hx.sdk.adapter:hx-taku-adapter:3.1.15' } ``` ### 1.3 配置混淆 -dontwarn com.hxad.sdk.** -keep class com.hxad.sdk.**{*;} -dontwarn com.anythink.hx.adapter.** -keep class com.anythink.hx.adapter.**{*;} ## 2 TaKu平台配置 ### 2.1 TaKu平台上配置自定义广告平台 Adapter类名介绍 ``` 初始化: 开屏:com.anythink.hx.adapter.HXATSPlashAdapter 原生:com.anythink.hx.adapter.HXATNativeExpressAdapter 插屏:com.anythink.hx.adapter.HXATInterstitialAdapter 激励视频:com.anythink.hx.adapter.HXATRewardVideoAdapter ``` ### 2.2 创建自定义广告平台,填写适配器类名 ### 2.3 添加广告源维度参数配置app_id和unit_id 开屏广告: ``` app_id = 71003 unit_id = 10000001 ``` 原生模板广告:isExpressAd 1 模板广告必填 ``` app_id = 71003 unit_id = 11111232 isExpressAd = 1 ``` 插屏广告 ``` app_id = 71003 unit_id = 11111233 ``` 激励视频广告 ``` app_id = 71003 unit_id = 11111234 ``` 备注: 1、上线时需要将app_id、unit_id的值替换成正式的,上述的app_id、unit_id的值为测试通用的 2、适配Taku SDK版本6.5.15 # 通过ToBid集成彗星SDK步骤 ## 1、Android集成步骤 ### 1.1 添加sdk文件依赖配置 在您的项目目录下build.gradle或setting.gradle文件中添加以下内容 ``` maven { url 'https://gitee.com/hx-sdk-android/hxsdk/raw/master/maven' } ``` ### 1.2 添加sdk文件依赖配置 在您的app目录下build.gradle文件中添加以下内容 ``` dependencies { //HX SDK implementation 'com.hx.sdk:hx-sdk:3.1.21' //Tobid适配器 implementation 'com.hx.sdk.adapter:hx-wind-adapter:3.1.14' } ``` ### 1.3 配置混淆 -dontwarn com.hxad.sdk.** -keep class com.hxad.sdk.**{*;} -dontwarn com.windmill.hx.adapter.** -keep class com.windmill.hx.adapter.**{*;} ## 2 ToBid平台配置 ### 2.1 ToBid平台上配置自定义广告平台 Adapter类名介绍 ``` 初始化:com.windmill.hx.adapter.HXWMAdapterProxy 开屏:com.windmill.hx.adapter.HXWMSplashAdapter 原生:com.windmill.hx.adapter.HXWMNativeAdapter 插屏:com.windmill.hx.adapter.HXWMInterstitialAdapter 激励视频:com.windmill.hx.adapter.HXWMRewardVideoAdapter ``` ### 2.2 创建自定义广告平台,填写适配器类名 ### 2.3 添加应用维度参数和代码位ID配置如下,appId 应用维度参数: ``` appId = 71003 ``` ``` 开屏广告代码位ID:10000001 原生广告代码位ID:11111232 插屏广告代码位ID:11111233 激励视频广告代码位ID:11111234 ``` 注意事项: ``` 1、上线时需要将appId的值和代码位ID替换成正式的,上述的appId和代码位ID的值为测试通用的 2、原生模板广告需配置自定义参数,内容如下: {"isExpressAd":true} 3、适配ToBid SDK版本4.6.80 ``` # 通过GroMore集成彗星SDK步骤 ## 1、Android集成步骤 ### 1.1 添加sdk文件依赖配置 在您的项目目录下build.gradle或setting.gradle文件中添加以下内容 ``` maven { url 'https://gitee.com/hx-sdk-android/hxsdk/raw/master/maven' } ``` ### 1.2 添加sdk文件依赖配置 在您的app目录下build.gradle文件中添加以下内容 ``` dependencies { //HX SDK implementation 'com.hx.sdk:hx-sdk:3.1.21' //GM 适配器 implementation 'com.hx.sdk.adapter:hx-gm-adapter:3.1.19' } ``` ### 1.3 配置混淆 -dontwarn com.hxad.sdk.** -keep class com.hxad.sdk.**{*;} -dontwarn com.bytedance.msdk.adapter.hx.** -keep public class com.bytedance.msdk.adapter.hx.** {*;} ## 2 GroMore平台配置 ### 2.1 GroMore平台上配置自定义广告平台 Adapter类名介绍 ``` 初始化:com.bytedance.msdk.adapter.hx.HXInit 开屏:com.bytedance.msdk.adapter.hx.HXSplashLoader 原生:com.bytedance.msdk.adapter.hx.HXNativeLoader 插屏:com.bytedance.msdk.adapter.hx.HXInterstitialLoader 激励视频:com.bytedance.msdk.adapter.hx.HXRewardVideoLoader ``` ### 2.2 创建自定义广告平台,填写AppId、适配器类名 ### 2.3 添加广告源,填写广告位ID 备注: 1、适配GroMore SDK版本7.3.0.7