OttLoginUtil.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package com.guangzhou.haochuan.jxtv.util;
  2. import android.content.Context;
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.InputStream;
  6. import tv.icntv.ottlogin.loginSDK;
  7. /**
  8. * Created by Lyn on 2018/2/23.
  9. */
  10. public class OttLoginUtil {
  11. private static OttLoginUtil instance;
  12. private boolean hasLogin =false; // 如果验证通过,则代表登陆,否则代表未登陆
  13. private String deviceID = ""; // 设备id
  14. private String templateID = ""; //模板id
  15. private String platformID = ""; //平台id
  16. private String mac = ""; //设备MAC
  17. public static OttLoginUtil getInstance(){
  18. if(instance == null){
  19. instance = new OttLoginUtil();
  20. }
  21. return instance;
  22. }
  23. public void updateVersion(final OnUpdateListener listener){
  24. if(!hasLogin){
  25. return;
  26. }
  27. try{
  28. loginSDK.getInstance().upgradeChecking(new loginSDK.Check() {
  29. @Override
  30. public void OnSuccess() {
  31. loginSDK.getInstance().upgrade();
  32. listener.OnSuccess();
  33. }
  34. @Override
  35. public void OnFailure() {
  36. listener.onFail();
  37. }
  38. });
  39. }catch (Exception e){
  40. e.printStackTrace();
  41. }
  42. }
  43. public void init(Context context,OnLoginListener loginListener){
  44. try{
  45. if(loginSDK.getInstance().sdkInit(getOttIniFilePath(context), loginSDK.TYPE_COMMON, context)){
  46. //Toast.makeText(this, "认证成功", Toast.LENGTH_SHORT).show();
  47. }else{
  48. //Log.d("loginSdk","认证返回" + loginRet + ": " + msg); // 可展示认证返回码及其对应描述信息
  49. }
  50. //开始认证
  51. String loginRet = loginSDK.getInstance().deviceLogin();
  52. if (loginRet.equals("111")) {
  53. hasLogin = true;
  54. // 认证成功,可获取认证信息
  55. StringBuffer tf = new StringBuffer();// 获取设备 ID
  56. loginSDK.getInstance().getDeviceID(tf); //设备ID
  57. deviceID = tf.toString();
  58. LocalStore.getInstance().storeUserId(context,deviceID);
  59. loginSDK.getInstance().getTemplateID(tf);
  60. templateID = tf.toString();
  61. loginSDK.getInstance().getPlatformID(tf);
  62. platformID = tf.toString();
  63. loginSDK.getInstance().getValueByKey("EXT_GET_LOGIN_MAC",tf);
  64. mac = tf.toString();
  65. loginListener.OnSuccess();
  66. updateVersion(new OnUpdateListener() {
  67. @Override
  68. public void OnSuccess() {
  69. }
  70. @Override
  71. public void onFail() {
  72. }
  73. });
  74. } else {
  75. // 认证失败,上报错误日志,提示框展示
  76. loginSDK.getInstance().logUpload(); // 失败后上报认证错误日志,用于远程问题定位 String msg = loginSDK.getInstance().loginStatusToMsg(loginRet);
  77. String msg = loginSDK.getInstance().loginStatusToMsg(loginRet);
  78. CrashHandler.getInstance().saveCrashInfoToWeb("认证失败:" + msg);
  79. loginListener.onFail(msg);
  80. //Log.d("loginSdk","认证返回" + loginRet + ": " + msg); // 可展示认证返回码及其对应描述信息
  81. }
  82. }catch (Exception e){
  83. e.printStackTrace();
  84. }
  85. }
  86. public boolean hasLogin(){return hasLogin;}
  87. public String getDeviceId(){return this.deviceID;}
  88. public String getTemplateID(){return this.templateID;}
  89. public String getPlatformID(){return this.platformID;}
  90. public String getMac(){return this.mac;}
  91. public String getLoginStateMsg(){
  92. return loginSDK.getInstance().getLoginStatus();
  93. }
  94. //获取ini文档路径
  95. private String getOttIniFilePath(Context context){
  96. String fileFolder = context.getFilesDir().toString()+"/ini";
  97. String filePath = fileFolder + "/DeviceInfo.ini";
  98. try{
  99. File folder = new File(fileFolder);
  100. if(!folder.exists()){
  101. folder.mkdirs();
  102. }
  103. File deviceFile = new File(filePath);
  104. if(!deviceFile.exists()){
  105. //Toast.makeText(this,"文件未存在,创建文件",Toast.LENGTH_LONG).show();
  106. deviceFile.createNewFile();
  107. InputStream is = context.getAssets().open("DeviceInfo.ini");
  108. FileOutputStream fos = new FileOutputStream(deviceFile);
  109. byte[] buffer = new byte[1024];
  110. int byteCount=0;
  111. while((byteCount=is.read(buffer))!=-1) {//循环从输入流读取 buffer字节
  112. fos.write(buffer, 0, byteCount);//将读取的输入流写入到输出流
  113. }
  114. fos.flush();//刷新缓冲区
  115. is.close();
  116. fos.close();
  117. }else {
  118. //Toast.makeText(this,"文件已存在",Toast.LENGTH_SHORT).show();
  119. }
  120. }catch (Exception e){
  121. e.printStackTrace();
  122. }
  123. return context.getFilesDir().toString();
  124. }
  125. public interface OnUpdateListener{
  126. public void OnSuccess();
  127. public void onFail();
  128. }
  129. public interface OnLoginListener{
  130. public void OnSuccess();
  131. public void onFail(String msg);
  132. }
  133. }