package com.guangzhou.haochuan.jxtv.util; import android.content.Context; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import tv.icntv.ottlogin.loginSDK; /** * Created by Lyn on 2018/2/23. */ public class OttLoginUtil { private static OttLoginUtil instance; private boolean hasLogin =false; // 如果验证通过,则代表登陆,否则代表未登陆 private String deviceID = ""; // 设备id private String templateID = ""; //模板id private String platformID = ""; //平台id private String mac = ""; //设备MAC public static OttLoginUtil getInstance(){ if(instance == null){ instance = new OttLoginUtil(); } return instance; } public void updateVersion(final OnUpdateListener listener){ if(!hasLogin){ return; } try{ loginSDK.getInstance().upgradeChecking(new loginSDK.Check() { @Override public void OnSuccess() { loginSDK.getInstance().upgrade(); listener.OnSuccess(); } @Override public void OnFailure() { listener.onFail(); } }); }catch (Exception e){ e.printStackTrace(); } } public void init(Context context,OnLoginListener loginListener){ try{ if(loginSDK.getInstance().sdkInit(getOttIniFilePath(context), loginSDK.TYPE_COMMON, context)){ //Toast.makeText(this, "认证成功", Toast.LENGTH_SHORT).show(); }else{ //Log.d("loginSdk","认证返回" + loginRet + ": " + msg); // 可展示认证返回码及其对应描述信息 } //开始认证 String loginRet = loginSDK.getInstance().deviceLogin(); if (loginRet.equals("111")) { hasLogin = true; // 认证成功,可获取认证信息 StringBuffer tf = new StringBuffer();// 获取设备 ID loginSDK.getInstance().getDeviceID(tf); //设备ID deviceID = tf.toString(); LocalStore.getInstance().storeUserId(context,deviceID); loginSDK.getInstance().getTemplateID(tf); templateID = tf.toString(); loginSDK.getInstance().getPlatformID(tf); platformID = tf.toString(); loginSDK.getInstance().getValueByKey("EXT_GET_LOGIN_MAC",tf); mac = tf.toString(); loginListener.OnSuccess(); updateVersion(new OnUpdateListener() { @Override public void OnSuccess() { } @Override public void onFail() { } }); } else { // 认证失败,上报错误日志,提示框展示 loginSDK.getInstance().logUpload(); // 失败后上报认证错误日志,用于远程问题定位 String msg = loginSDK.getInstance().loginStatusToMsg(loginRet); String msg = loginSDK.getInstance().loginStatusToMsg(loginRet); CrashHandler.getInstance().saveCrashInfoToWeb("认证失败:" + msg); loginListener.onFail(msg); //Log.d("loginSdk","认证返回" + loginRet + ": " + msg); // 可展示认证返回码及其对应描述信息 } }catch (Exception e){ e.printStackTrace(); } } public boolean hasLogin(){return hasLogin;} public String getDeviceId(){return this.deviceID;} public String getTemplateID(){return this.templateID;} public String getPlatformID(){return this.platformID;} public String getMac(){return this.mac;} public String getLoginStateMsg(){ return loginSDK.getInstance().getLoginStatus(); } //获取ini文档路径 private String getOttIniFilePath(Context context){ String fileFolder = context.getFilesDir().toString()+"/ini"; String filePath = fileFolder + "/DeviceInfo.ini"; try{ File folder = new File(fileFolder); if(!folder.exists()){ folder.mkdirs(); } File deviceFile = new File(filePath); if(!deviceFile.exists()){ //Toast.makeText(this,"文件未存在,创建文件",Toast.LENGTH_LONG).show(); deviceFile.createNewFile(); InputStream is = context.getAssets().open("DeviceInfo.ini"); FileOutputStream fos = new FileOutputStream(deviceFile); byte[] buffer = new byte[1024]; int byteCount=0; while((byteCount=is.read(buffer))!=-1) {//循环从输入流读取 buffer字节 fos.write(buffer, 0, byteCount);//将读取的输入流写入到输出流 } fos.flush();//刷新缓冲区 is.close(); fos.close(); }else { //Toast.makeText(this,"文件已存在",Toast.LENGTH_SHORT).show(); } }catch (Exception e){ e.printStackTrace(); } return context.getFilesDir().toString(); } public interface OnUpdateListener{ public void OnSuccess(); public void onFail(); } public interface OnLoginListener{ public void OnSuccess(); public void onFail(String msg); } }