DU Ad Platform_SDK for Android 接 入 手册 Version: DuWeatherSDK_1.1.6 前提 : DuWeather SDK 需要依赖 DU Ad Platform_SDK HW1.0.9.8 或 CW1.0.9.7 ( 含 ) 以上版本 在接 入 DuWeather 之前需要完成 HW 或 CW 初始化, 加载, 代码混淆三个部分 DU Ad Platform_SDK for Android 接 入 手册 1. 获取身份 2. 加载与配置 2.1 导 入 SDK 文件 2.2 配置 AndroidManifest.xml 2.3 混淆代码 3. 初始化 4. 功能使 用 4.1 卡 片控件 4.2 桌 面悬浮窗控件 4.3 天 气通知栏 1. 获取身份 请参照 HW 或 CW 版 DUADplatform SDK 文档第 3 章 ; 申请 DuWeather 广告位时, 需申请的 广告位类型为 天 气通 2. 加载与配置 请严格按照本章进 行行配置, 否则有可能会出现运 行行异常 请参照 HW 或 CW 版 DUADplatform SDK 文档第 4 章, 完成后继续阅读本 文档 2.1 导 入 SDK 文件 拷 贝 SDK aar 包放到你的安卓 工程 文件根 目录的 libs 目录下, 然后配置 build.gradle :
repositories { flatdir { dirs 'libs' dependencies { compile filetree(include: ['*.jar'], dir: 'libs') compile(name: 'DuappsAd-xW-xxx-release', ext: 'aar') compile(name: 'DAPSDK_Weather-release-xxx' ext: 'aar') * 注 : flatdir 指定的位置即为 aar 存放的位置 2.2 配置 AndroidManifest.xml 添加 DuWeather 的额外权限 : // 以下权限 用于获取准确地理理位置下发天 气数据 没有该权限时 DuWeather 会使 用模糊地理理位置, 可 能导致信息下发不不准确 <uses-permission android:name="android.permission.access_wifi_state" /> // 以下权限 用于桌 面悬浮窗功能, 若不不使 用该功能可不不 用申请 <uses-permission android:name="android.permission.get_tasks"/> <uses-permission android:name="android.permission.system_alert_window" /> 添加 DuWeather 的 Activity, receiver, service: <!--dapweather begin--> <activity android:name="com.daps.weather.dapweatheractivity" android:screenorientation="portrait" /> <receiver android:name="com.daps.weather.reciver.dapweatherbroadcastreceiver"> <intent-filter android:priority="90000"> <action android:name="android.intent.action.user_present"/> //1.1 版本新增 <action android:name="com.daps.weather.broadcast"/> </intent-filter> </receiver> <service android:name="com.daps.weather.service.dapweathermsgservice" />
<service android:name="com.daps.weather.location.dapweatherlocationsservice" /> <!--dapweather end--> 2.3 混淆代码 请务必按如下混淆规则对应 用代码进 行行混淆, 否则有可能会出现运 行行异常 : 将以下类添加到 proguard 配置 : -keep public class com.daps.weather.notification.dapweathernotification { *; -keep public class com.daps.weather.weathercard.dapweatherview { public <methods>; -keep public class com.daps.weather.dapweatheractivity { public <methods>; -keep public class com.daps.weather.service.dapweathermsgservice { *; -keep public class com.daps.weather.location.dapweatherlocationsservice { *; -keep public class com.daps.weather.dapweather { public <methods>; -keep public class com.daps.weather.weathercard.dapweatherenterimageview { public <methods>; -keep public class com.daps.weather.floatdisplay.floatdisplaycontroller { *; -keep public class com.daps.weather.base.sharedprefsutils { public static boolean issuspensionon(android.content.context); public static void setsuspensionon(android.content.context,boolean); -keep class com.daps.weather.bean.**{*; -keep class com.daps.weather.notification.dapweathernotification$weathernotificationlist ener { *; -keep attributes InnerClasses 注 : 混淆 方法参 见 Android 官 方混淆 文档 :${ android-sdk /tools/proguard/ 3. 初始化
3. 初始化 1. 创建 Json 文件, 将 Placement_ID 与 广告位类型建 立对应关系 具体格式如下 : { "weather": [ { "pid": "YOUR_DAP_PLACEMENT_ID" ] 2. 在 application 的 OnCreate() 方法中使 用 DapWeather.init() 接 口 : public static void init(context context,int pid) Context context int pid ACTIVITY CONTEXT 天 气通 广告位 id 注 : 请在完成 DuAdNetwork.init 后进 行行 DapWeather.init 代码示例例 : public void oncreate() { super.oncreate(); // 初始化 DAP SDK DuAdNetwork.init(this, getconfigjson(getapplicationcontext())); // 初始化天 气 SDK DapWeather.init((Application) getapplicationcontext(), My_Weather_pid); 3. 设置定位的更更新时间 DapWeather.setLocationUpdateTime(), 默认 600 秒获取定位失败时, 天 气功能将不不能使 用 该 方法为设置定位失败后再次更更新的时间 建议设置间隔在 1 小时以内 接 口 : public static void setlocationupdatetime(context context, int second)
Context context int second ACTIVITY CONTEXT 定位更更新时间, 单位为秒 获取当前设置的定位更更新时间, 单位为秒 public static int getlocationupdatetime(context context) Context context ACTIVITY CONTEXT 4. 功能使 用 4.1 卡 片控件 应 用内卡 片控件, 主要 用于在 app 内部进 行行天 气显示 public DapWeatherView(Context context) 天 气卡 片控件, 可以添加到需要显示的布局中 public void load() 加载天 气数据, 有数据 自动填充 DapWeatherView 卡 片 代码示例例 :
// 卡 片 入 口 RelativeLayout rl = (RelativeLayout) findviewbyid(r.id.demo_weather_view_rl); DapWeatherView mduweatherview = new DapWeatherView(this); rl.addview(mduweatherview); findviewbyid(r.id.btn_weather_view).setonclicklistener(new View.OnClickListener() { @Override public void onclick(view view) { mduweatherview.load(); ); 4.2 桌 面悬浮窗控件 该控件为在 手机桌 面右侧显示的 一个半透明天 气悬浮窗 点击后进 入天 气结果 页 注 : 在 android 6.0, 需要 用户 手动开启悬浮窗权限, 实现 方式请参考 Demo
public void FloatDisplayController.setFloatSerachWindowIsShow(Context context, Boolean isshown) Context context Boolean isshown ACTIVITY CONTEXT 功能开关 True 表示功能开启 代码示例例 : // 悬浮框 入 口 findviewbyid(r.id.btn_weather_suspension).setonclicklistener(new View.OnClickListener() { @Override public void onclick(view view) { FloatDisplayController.setFloatSerachWindowIsShow(getApplicationContext(), true); ); 4.3 天 气通知栏 该控件为定时推送的天 气通知 点击后进 入天 气结果 页 请在应 用 Application 类或 子类中进 行行天 气通知栏相关设置 如果在 Activity 中注册通知栏回调, 当 Activity 被销毁时, 通知栏会没有点击和展示回调 通知栏样式 : 暗 色主题 : 亮 色主题 :
注 : 通知栏是定时推送服务, 由百度服务器器控制 ; 7:30-12:00 推送当 日天 气 ; 13:00-20:30 推送升降温天 气 ; 20:30-23:00 推送次 日天 气 ; 每个时间段只会推送 一次天 气通知, 通知栏功能开启后 SDK 会 自动进 行行通知加载 相关接 口 : public DapWeatherNotification.getInstance(Context context) 初始化天 气通知栏功能 public void setongoing(boolean bool) 设置通知栏常驻 ( 不不可被 用户忽略略 ),true 为常驻通知栏,false 为临时通知栏 该功能默认为 true public void setautocancel(boolean bool) 设置点击通知栏后是否 自动关闭通知栏,true 为 自动关闭通知栏,false 为不不 自动关闭通知栏 该功能默认为 false, 只对临时通知栏 setongoing(false) 有效 public void setpushtodaytomorrowweather(boolean bool) 设置今天和明 日天 气推送功能 true 为功能开启,false 为功能关闭 该功能默认为 true public void setpushelevatingtemperature(boolean bool) 设置升降温推送功能 true 为功能开启,false 为功能关闭
该功能默认为 true public void setclosednotification(boolean bool) 设置通知栏展示是否关闭 设置关闭后已展示通知会被清除, 同时不不会再有新的通知 true 为通知栏关闭,false 为通知栏开启 该功能默认为 false public void setnotificationstyle(int NotificationStyle) 设置通知栏整体主题颜 色 设置后通知栏样式会在下次刷新时改变 DapWeatherNotification.NOTIFICATIONSTYLE_DARK DapWeatherNotification.NOTIFICATIONSTYLE_WHITE 黑 色主题 白 色主题 通知栏监听设置 : 接 口 : public void setnotificationclicklistener(weathernotificationlistener adlistener) WeatherNotificationListener adlistener 回调函数返回通知栏展示和点击事件 public interface WeatherNotificationListener { // 通知栏展示回调 public void onshow(int weathertype); // 通知栏点击回调 public void onclick(int weathertype); int weathertype 数值及其含义如下 : int weathertype 含义 1 当 日天 气通知展示 / 点击 2 升降温天 气通知展示 / 点击 3 次 日天 气通知展示 / 点击
代码示例例 : mnotification.setnotificationclicklistener(new DapWeatherNotification.WeatherNotificationListener() { @Override public void onclick(int weathertype) { Log.e(TAG," 通知栏被点击了了 " + weathertype); @Override public void onshow(int weathertype) { Log.e(TAG," 通知栏展示了了 " + weathertype); );