package com.mm.android.deviceaddmodule;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.os.Bundle;
|
import android.text.TextUtils;
|
|
import com.lechange.opensdk.api.InitParams;
|
import com.lechange.opensdk.api.LCOpenSDK_Api;
|
import com.lechange.opensdk.device.LCOpenSDK_DeviceInit;
|
import com.mm.android.deviceaddmodule.device_wifi.CurWifiInfo;
|
import com.mm.android.deviceaddmodule.device_wifi.DeviceWifiListActivity;
|
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.BusinessException;
|
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.EnvironmentConfig;
|
import com.mm.android.deviceaddmodule.mobilecommon.entity.device.DHDevice;
|
import com.mm.android.deviceaddmodule.openapi.CONST;
|
import com.mm.android.deviceaddmodule.openapi.DeviceAddOpenApiManager;
|
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
|
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
|
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
|
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
|
import com.zxing.ContextHelper;
|
|
import static com.mm.android.deviceaddmodule.device_wifi.DeviceConstant.IntentCode.DEVICE_SETTING_WIFI_LIST;
|
|
/**
|
* 添加设备组件 唯一入口
|
*/
|
public class LCDeviceEngine {
|
private boolean sdkHasInit = false;
|
private volatile static LCDeviceEngine lcDeviceEngine;
|
public String accessToken;
|
public String subAccessToken;
|
public String openid;
|
private Throwable throwable;
|
public CommonParam commonParam;
|
public String userId = "";
|
private String homeId;
|
|
public static LCDeviceEngine newInstance() {
|
if (lcDeviceEngine == null) {
|
synchronized (LCDeviceEngine.class) {
|
if (lcDeviceEngine == null) {
|
lcDeviceEngine = new LCDeviceEngine();
|
}
|
}
|
}
|
return lcDeviceEngine;
|
}
|
|
public boolean init(CommonParam commonParam) throws Throwable {
|
this.commonParam = commonParam;
|
this.accessToken = "St_0000c3e2e772d5f74bfca2d86eaa18a6";//为了低层空判断,当前token无效
|
this.userId = "";
|
this.sdkHasInit = false;
|
if (commonParam == null) {
|
throw new Exception("commonParam must not null");
|
}
|
//参数校验
|
commonParam.checkParam();
|
//初始化参数
|
initParam(commonParam);
|
if (!CONST.HOST.contains("hdlcontrol.com")) {
|
//获取开放平台token
|
initToken();
|
if (TextUtils.isEmpty(accessToken)) {
|
throw throwable;
|
}
|
}
|
//组件初始化
|
InitParams initParams = new InitParams(commonParam.getContext(), CONST.Envirment.OVERSEAS_PRO.url.replace("https://", ""), accessToken);
|
LCOpenSDK_Api.initOpenApi(initParams);
|
LCOpenSDK_DeviceInit.getInstance();
|
sdkHasInit = true;
|
return true;
|
}
|
|
public void addDevice(Activity activity) throws Exception {
|
if (!sdkHasInit) {
|
throw new Exception("not init");
|
}
|
//开启添加页面
|
activity.startActivity(new Intent(commonParam.getContext(), DeviceAddActivity.class));
|
}
|
|
public void setSubAccessToken(String subAccessToken) {
|
this.subAccessToken = subAccessToken;
|
}
|
|
public boolean deviceOnlineChangeNet(Activity activity, DHDevice device, CurWifiInfo wifiInfo) {
|
if (!sdkHasInit) {
|
return false;
|
}
|
//开启设备在线配网
|
Intent intent = new Intent(commonParam.getContext(), DeviceWifiListActivity.class);
|
Bundle bundle = new Bundle();
|
bundle.putSerializable("DHDEVICE_INFO", device);
|
bundle.putSerializable("DEVICE_CURRENT_WIFI_INFO", wifiInfo);
|
intent.putExtras(bundle);
|
activity.startActivityForResult(intent, DEVICE_SETTING_WIFI_LIST);
|
return true;
|
}
|
|
private String initToken() {
|
Thread thread = new Thread(new Runnable() {
|
@Override
|
public void run() {
|
try {
|
accessToken = DeviceAddOpenApiManager.getToken();
|
} catch (BusinessException e) {
|
throwable = new Throwable(e.errorDescription);
|
}
|
}
|
});
|
try {
|
thread.start();
|
thread.join(4000);
|
} catch (InterruptedException e) {
|
throwable = e;
|
}
|
return accessToken;
|
}
|
|
private void initParam(CommonParam commonParam) throws Exception {
|
userId = TextUtils.isEmpty(commonParam.getUserId()) ? commonParam.getAppId() : commonParam.getUserId();
|
//传入参数 AppId SecretKey 环境切换
|
CONST.makeEnv(commonParam.getEnvirment(), commonParam.getAppId(), commonParam.getAppSecret());
|
ContextHelper.init(commonParam.getContext());
|
new EnvironmentConfig.Builder().setContext(commonParam.getContext()).build();
|
initImageLoader(commonParam.getContext());
|
}
|
|
private void initImageLoader(Context context) {
|
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
|
.threadPriority(Thread.NORM_PRIORITY - 2).threadPoolSize(3)
|
.tasksProcessingOrder(QueueProcessingType.LIFO)
|
.memoryCache(new LruMemoryCache((int) (Runtime.getRuntime().maxMemory() / 16)))
|
.memoryCacheExtraOptions(600, 400)
|
.diskCacheExtraOptions(600, 400, null).diskCacheSize(50 * 1024 * 1024)
|
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
|
.imageDownloader(new BaseImageDownloader(context))
|
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
|
.writeDebugLogs()
|
.build();
|
ImageLoader.getInstance().init(config);
|
}
|
|
public String getHomeId() {
|
return homeId == null ? "" : homeId;
|
}
|
|
public void setHomeId(String homeId) {
|
this.homeId = homeId;
|
}
|
}
|