app/src/main/java/safeluck/drive/evaluation/util/MyLog.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lib/src/main/java/com/anyun/exam/lib/AYSdk.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lib/src/main/java/com/anyun/exam/lib/SvrManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/safeluck/drive/evaluation/util/MyLog.java
@@ -33,7 +33,7 @@ private static char MYLOG_TYPE = 'v'; // 日志文件在sdcard中的路径 private static String MYLOG_PATH_SDCARD_DIR = "/sdcard/nvlog"; private static String MYLOG_PATH_SDCARD_DIR = "/sdcard/nvjiakaolog"; private static int SDCARD_LOG_FILE_SAVE_DAYS = 3;// sd卡中日志文件的最多保存天数 build.gradle
@@ -7,7 +7,7 @@ } dependencies { classpath 'com.android.tools.build:gradle:3.3.0' classpath 'com.android.tools.build:gradle:3.4.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files lib/src/main/java/com/anyun/exam/lib/AYSdk.java
@@ -18,13 +18,11 @@ private static final String TAG = "AYSDK"; private IAYExamListener mCallback; //远程服务接口 private IRemoteInterface remoteInterface; //安运驾考系统 sdk 单例模式 private volatile static AYSdk ourInstance = null; private Context mContext; private MyServiceConn conn; public static AYSdk getInstance() { if (ourInstance == null){ @@ -44,9 +42,7 @@ public void init(Context context){ this.mContext = context; //bind service Intent intent = new Intent(mContext,RemoteService.class); conn = new MyServiceConn(); mContext.bindService(intent,conn,Context.BIND_AUTO_CREATE); SvrManager.getInstance().bindRemoteService(mContext); } @@ -56,15 +52,8 @@ */ public void uninit(){ if (mContext != null){ if (remoteInterface!=null && remoteInterface.asBinder().isBinderAlive()){ try { remoteInterface.unRegistListener(RemoteCallback); } catch (RemoteException e) { e.printStackTrace(); } } mContext.unbindService(conn); //UnbinService SvrManager.getInstance().unBindRemoteService(mContext); }else{ Log.e(TAG,"mContext == null,please init SDK firstly"); throw new RuntimeException("mContext == null,please init SDK firstly"); @@ -75,20 +64,6 @@ } /** * 远程服务回调通知客户端消息 */ IListenerInterface RemoteCallback = new IListenerInterface.Stub(){ @Override public void onMessageArrived(String json) throws RemoteException { if (mCallback != null){ mCallback.callBackMsg(json); } } }; @Override public void checkSignal(int type) { @@ -97,65 +72,17 @@ @Override public void add() { if (!checkRemoteIsNull()){ try { remoteInterface.add(); } catch (RemoteException e) { e.printStackTrace(); } } SvrManager.getInstance().add(); } @Override public void registListener(IAYExamListener iayExamListener) { this.mCallback = iayExamListener; } /** * 检查远程服务是否可以使用 * @return 可以用false,不可以用true */ private boolean checkRemoteIsNull() { return remoteInterface==null?true:false; } class MyServiceConn implements ServiceConnection { @Override public void onServiceConnected(ComponentName name, IBinder service) { remoteInterface = IRemoteInterface.Stub.asInterface(service); try { //设置死亡代理 service.linkToDeath(mDeathRecipient,0); remoteInterface.registListener(RemoteCallback); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { } SvrManager.getInstance().registerListener(iayExamListener); } /** * Binder断裂回调 * 如果服务端进程由于某种异常原因停止 */ private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() { @Override public void binderDied() { Log.e(TAG,"IBinder.DeathRecipient binderDied"); if (remoteInterface != null){ Log.e(TAG,"IBinder.DeathRecipient binderDied remoteInterface != null ,return"); return; } remoteInterface.asBinder().unlinkToDeath(mDeathRecipient,0); remoteInterface = null; } }; } lib/src/main/java/com/anyun/exam/lib/SvrManager.java
New file @@ -0,0 +1,126 @@ package com.anyun.exam.lib; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; import java.util.LinkedList; /** * MyApplication2 * Created by lzw on 2019/9/19. 18:19:48 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ class SvrManager { private static final SvrManager ourInstance = new SvrManager(); private static final String TAG = "SvrManager"; private MyServiceConn conn; private IAYExamListener mCallback; //远程服务接口 private IRemoteInterface remoteInterface; static SvrManager getInstance() { return ourInstance; } private SvrManager() { } /** * 检查远程服务是否可以使用 * @return 可以用false,不可以用true */ private boolean checkRemoteIsNull() { return remoteInterface==null?true:false; } /** * Binder断裂回调 * 如果服务端进程由于某种异常原因停止 */ private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() { @Override public void binderDied() { Log.e(TAG,"IBinder.DeathRecipient binderDied"); if (remoteInterface != null){ Log.e(TAG,"IBinder.DeathRecipient binderDied remoteInterface != null ,return"); return; } remoteInterface.asBinder().unlinkToDeath(mDeathRecipient,0); remoteInterface = null; } }; public void registerListener(IAYExamListener iayExamListener) { this.mCallback = iayExamListener; } public void add() { if (!checkRemoteIsNull()){ try { remoteInterface.add(); } catch (RemoteException e) { e.printStackTrace(); } } } class MyServiceConn implements ServiceConnection { @Override public void onServiceConnected(ComponentName name, IBinder service) { remoteInterface = IRemoteInterface.Stub.asInterface(service); try { //设置死亡代理 service.linkToDeath(mDeathRecipient,0); remoteInterface.registListener(RemoteCallback); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { } } public void bindRemoteService(Context mContext){ Intent intent = new Intent(mContext,RemoteService.class); conn = new MyServiceConn(); mContext.bindService(intent,conn, Context.BIND_AUTO_CREATE); } public void unBindRemoteService(Context mContext){ if (remoteInterface!=null && remoteInterface.asBinder().isBinderAlive()){ try { remoteInterface.unRegistListener(RemoteCallback); } catch (RemoteException e) { e.printStackTrace(); } } mContext.unbindService(conn); } /** * 远程服务回调通知客户端消息 */ IListenerInterface RemoteCallback = new IListenerInterface.Stub(){ @Override public void onMessageArrived(String json) throws RemoteException { if (mCallback != null){ mCallback.callBackMsg(json); } } }; }