diff --git a/app/build.gradle b/app/build.gradle index ce45e37..ffa3c01 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,7 +12,7 @@ android { minSdkVersion 22 targetSdkVersion 30 versionCode 6 - versionName "V2.0.8.1" + versionName "V2.0.8.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' diff --git a/app/src/main/java/qianmu/container/activity/H5/H5Data.java b/app/src/main/java/qianmu/container/activity/H5/H5Data.java index 9e6a4cb..34d6287 100644 --- a/app/src/main/java/qianmu/container/activity/H5/H5Data.java +++ b/app/src/main/java/qianmu/container/activity/H5/H5Data.java @@ -11,8 +11,10 @@ import com.google.gson.reflect.TypeToken; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; +import cz.msebera.android.httpclient.protocol.HTTP; import com.lzy.okgo.OkGo; import com.lzy.okgo.callback.FileCallback; +import com.lzy.okgo.callback.StringCallback; import org.greenrobot.eventbus.EventBus; @@ -301,16 +303,8 @@ public class H5Data extends BaseData { } //GET方式获取离线数据 - public static void queryOfflineDataByInterfaceToGet(String url, String jsonData, String fileName, Map bigFiles , QueryPreparedListener preparedListener, QueryFinishListener finishListener) { + public static void queryOfflineDataByInterfaceToGet(Context context, String url, String jsonData, String fileName, Map bigFiles , QueryPreparedListener preparedListener, QueryFinishListener finishListener) { if (preparedListener != null) preparedListener.onPrepared(); - AsyncHttpClient client; - if(url.contains("https")){ - client = new AsyncHttpClient(true, 80, 443); - }else { - client = new AsyncHttpClient(); - } - client.setTimeout(30000); - client.setMaxRetriesAndTimeout(0, 20000); if(url.contains("?")){ url = url +"&projectCode="+FloorData.getMallCode(); }else { @@ -321,94 +315,25 @@ public class H5Data extends BaseData { url = url +"&"+"code="+deviceCode; } String finalUrl = url; - client.get(url, new AsyncHttpResponseHandler() { - @Override - public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { - try { - - String response = new String(responseBody).replace("\\\\", "/"); - -// Log.d("url", finalUrl); -// Log.d("response", response); - //获取数据成功时 才解析解析素材url并更新离线文件 - Resp resp = new Gson().fromJson(response, new TypeToken() {}.getType()); - if (resp.getCode() == 200) { - - String filePath = StringUtil.strSplice(Constant.CACHE_PATH, "dist/static/offline/JSON/", fileName, ".json"); - String decryptDataJson =AesUtil.decrypt((String.valueOf(resp.getData()))); - if(decryptDataJson.equals("解密失败")|| decryptDataJson.isEmpty()){ - FileUtil.writeDataToFile(response, filePath, false); - if(fileName.equals("getDevCoordinateByIP")){ - LoggerUtil.e("getDevCoordinateByIP()",response); - //保存科大讯飞地址 - saveKDXFData(response); - } - }else { - try { - JSONObject entries = JSONUtil.parseObj(decryptDataJson); - resp.setData(entries); - }catch (Exception e){ - JSONArray entries = JSONUtil.parseArray(decryptDataJson); - resp.setData(entries); - } - String s = GsonUtil.getGson().toJson(resp); - FileUtil.writeDataToFile(s, filePath, false); - if(fileName.equals("getDevCoordinateByIP")){ - - LoggerUtil.e("getDevCoordinateByIP()",response); - //保存科大讯飞地址 - saveKDXFData(s); - } - } - }else { - LoggerUtil.e("导视接口报错:"+finalUrl, response); - } - } catch (Throwable t) { - LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); - } - if (finishListener != null) finishListener.onFinish(); - } - - @Override - public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { - LoggerUtil.e("请求失败:"+finalUrl, StringUtil.getThrowableStr(error)); - if (finishListener != null) finishListener.onFinish(); - } - }); - } - - //POST方式获取离线数据 多添加一个JSON请求体(参数必须是JSON格式) - public static void queryOfflineDataByInterface(String url, String jsonData, String fileName, Map bigFiles, QueryPreparedListener preparedListener, QueryFinishListener finishListener) { - if (preparedListener != null) preparedListener.onPrepared(); - try { - AsyncHttpClient client; - if(url.contains("https")){ - client = new AsyncHttpClient(true, 80, 443); - }else { - client = new AsyncHttpClient(); - } - client.setTimeout(30000); - client.setMaxRetriesAndTimeout(0, 20000); - StringEntity entity = new StringEntity(jsonData); - client.post(MyApplication.getInstance().getApplicationContext(), url, entity, RequestParams.APPLICATION_JSON, new AsyncHttpResponseHandler() { + OkGo.get(url) // 使用泛型指定响应数据类型为 String + .tag(context) // 设置请求的 tag,用于取消请求 + .execute(new StringCallback() { @Override - public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { + public void onSuccess(com.lzy.okgo.model.Response response) { try { - String response = new String(responseBody).replace("\\\\", "/"); -// Log.d("url", url); -// Log.d("response", response); - //获取数据成功时 才解析解析素材url并更新离线文件 - Resp resp = new Gson().fromJson(response, new TypeToken() {}.getType()); - + String responseData = response.body(); // 获取字符串响应 + String responseStr = responseData.replace("\\\\", "/"); + Resp resp = new Gson().fromJson(responseStr, new TypeToken() {}.getType()); if (resp.getCode() == 200) { - //解析离线数据中的大后台图片 -// analysisUrlByStr(response, "/Files/", "dist", bigFiles); - //将离线数据保存为json文件格式 + String filePath = StringUtil.strSplice(Constant.CACHE_PATH, "dist/static/offline/JSON/", fileName, ".json"); String decryptDataJson =AesUtil.decrypt((String.valueOf(resp.getData()))); - String filePath = StringUtil.strSplice(Constant.CACHE_PATH, "dist", "/static/offline/JSON/", fileName, ".json"); - if(decryptDataJson.equals("解密失败")|| decryptDataJson.isEmpty()) { - - FileUtil.writeDataToFile(response, filePath, false); + if(decryptDataJson.equals("解密失败")|| decryptDataJson.isEmpty()){ + FileUtil.writeDataToFile(responseStr, filePath, false); + if(fileName.equals("getDevCoordinateByIP")){ + LoggerUtil.e("getDevCoordinateByIP()",responseStr); + //保存科大讯飞地址 + saveKDXFData(responseStr); + } }else { try { JSONObject entries = JSONUtil.parseObj(decryptDataJson); @@ -419,23 +344,76 @@ public class H5Data extends BaseData { } String s = GsonUtil.getGson().toJson(resp); FileUtil.writeDataToFile(s, filePath, false); + if(fileName.equals("getDevCoordinateByIP")){ + LoggerUtil.e("getDevCoordinateByIP()",responseStr); + //保存科大讯飞地址 + saveKDXFData(s); + } } - }else { - LoggerUtil.e("导视接口报错:"+url, response); + LoggerUtil.e("导视接口报错:"+finalUrl, responseStr); } } catch (Throwable t) { LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); } if (finishListener != null) finishListener.onFinish(); } - + // 请求失败 @Override - public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { - Log.d("error", StringUtil.getThrowableStr(error)); + public void onError(com.lzy.okgo.model.Response response) { + Throwable error = response.getException(); // 获取错误信息 + LoggerUtil.e("请求失败:"+finalUrl, error.getMessage()); if (finishListener != null) finishListener.onFinish(); } }); + } + + //POST方式获取离线数据 多添加一个JSON请求体(参数必须是JSON格式) + public static void queryOfflineDataByInterface(Context context,String url, String jsonData, String fileName, Map bigFiles, QueryPreparedListener preparedListener, QueryFinishListener finishListener) { + if (preparedListener != null) preparedListener.onPrepared(); + try { + OkGo.post(url) + .tag(context) + .upJson(jsonData) // 将 JSON 字符串作为请求体发送 + .execute(new StringCallback() { + @Override + public void onSuccess(com.lzy.okgo.model.Response response) { + try { + String responseData = response.body().replace("\\\\", "/"); + + Resp resp = new Gson().fromJson(responseData, new TypeToken() {}.getType()); + if (resp.getCode() == 200) { + //将离线数据保存为json文件格式 + String decryptDataJson =AesUtil.decrypt((String.valueOf(resp.getData()))); + String filePath = StringUtil.strSplice(Constant.CACHE_PATH, "dist", "/static/offline/JSON/", fileName, ".json"); + if(decryptDataJson.equals("解密失败")|| decryptDataJson.isEmpty()) { + FileUtil.writeDataToFile(responseData, filePath, false); + }else { + try { + JSONObject entries = JSONUtil.parseObj(decryptDataJson); + resp.setData(entries); + }catch (Exception e){ + JSONArray entries = JSONUtil.parseArray(decryptDataJson); + resp.setData(entries); + } + String s = GsonUtil.getGson().toJson(resp); + FileUtil.writeDataToFile(s, filePath, false); + } + }else { + LoggerUtil.e("导视接口报错:"+url, responseData); + } + } catch (Throwable t) { + LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); + } + if (finishListener != null) finishListener.onFinish(); + } + + @Override + public void onError(com.lzy.okgo.model.Response response) { + Log.e("OkGoExample", response.getException().getMessage()); + if (finishListener != null) finishListener.onFinish(); + } + }); } catch (Throwable t) { if (finishListener != null) finishListener.onFinish(); LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); diff --git a/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java b/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java index 8260e3c..940923c 100644 --- a/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java +++ b/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java @@ -305,11 +305,10 @@ public class UpdateFileActivity extends BaseActivity { currRoute = Constant.ROUTE_UPDATE_FILE; LoggerUtil.e("UpdateFileActivity","onResume()"); //设备迁移使用 -// DeviceData.saveDeviceInfo(DeviceData.HINT_SERVER_IP, "http://192.168.10.215"); -// DeviceData.saveDeviceInfo(DeviceData.HINT_REG_KEY, "qNMWiv"); -// String deviceCode = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE); -// MqttData.getMQTTToken(deviceCode,null,null); -// DeviceData.addDevice(this, null, null); + DeviceData.saveDeviceInfo(DeviceData.HINT_SERVER_IP, "http://192.168.2.1"); + String deviceCode = DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_CODE); + MqttData.getMQTTToken(deviceCode,null,null); + DeviceData.addDevice(this, null, null); handler.removeMessages(TYPE_DOWNLOAD_H5); handler.sendEmptyMessageDelayed(TYPE_DOWNLOAD_H5, 30000); @@ -363,9 +362,9 @@ public class UpdateFileActivity extends BaseActivity { String method = StringUtil.getString(anInterface.getMethod()); String params = StringUtil.getString(anInterface.getParameter()); if (method.toLowerCase().equals("get")) { - H5Data.queryOfflineDataByInterfaceToGet(url, params,fileName, bigFiles, () -> totalQueryCount++, () -> queryResponseCount++); + H5Data.queryOfflineDataByInterfaceToGet(this,url, params,fileName, bigFiles, () -> totalQueryCount++, () -> queryResponseCount++); } else { - H5Data.queryOfflineDataByInterface(url, params, fileName, bigFiles, () -> totalQueryCount++, () -> queryResponseCount++); + H5Data.queryOfflineDataByInterface(this, url, params, fileName, bigFiles, () -> totalQueryCount++, () -> queryResponseCount++); } } } diff --git a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java index dfd5e71..a9b7333 100644 --- a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java +++ b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java @@ -442,7 +442,7 @@ public class WebViewActivity extends BaseActivity { // h5调用android:接口请求post @JavascriptInterface public void interfaceRequest(String url , String map , boolean state) { - DeviceData.queryOfflineDataByInterfaceToPost(url, map, new QueryFinishListener() { + DeviceData.queryOfflineDataByInterfaceToPost(WebViewActivity.this, url, map, new QueryFinishListener() { @Override public void onFinish() { if(state){ @@ -451,16 +451,13 @@ public class WebViewActivity extends BaseActivity { } } }); - -// LoggerUtil.e(TAG,"JS调用了Android的方法:interfaceRequest1():"+url+","+map); - } // h5调用android:接口请求get @JavascriptInterface public void interfaceRequest(String url , boolean state) { - DeviceData.queryOfflineDataByInterfaceToGet(url, new QueryFinishListener() { + DeviceData.queryOfflineDataByInterfaceToGet(WebViewActivity.this, url, new QueryFinishListener() { @Override public void onFinish() { if(state){ diff --git a/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java b/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java index a5ee110..b0e806a 100644 --- a/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java +++ b/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java @@ -622,7 +622,6 @@ public class ViewScreenSaver extends ViewBase { break; case TYPE_UPDATE_VIDEO0: -// Log.e("TAG","视频播放"); if(videoComponents0==null){ return; } diff --git a/app/src/main/java/qianmu/container/data/DeviceData.java b/app/src/main/java/qianmu/container/data/DeviceData.java index 8130122..8c0430e 100644 --- a/app/src/main/java/qianmu/container/data/DeviceData.java +++ b/app/src/main/java/qianmu/container/data/DeviceData.java @@ -1,6 +1,7 @@ package qianmu.container.data; import android.app.Activity; +import android.content.Context; import android.util.Log; import com.google.gson.Gson; @@ -10,6 +11,8 @@ import com.google.gson.reflect.TypeToken; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; +import com.lzy.okgo.OkGo; +import com.lzy.okgo.callback.StringCallback; import java.math.BigInteger; import java.nio.charset.StandardCharsets; @@ -20,12 +23,16 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import cz.msebera.android.httpclient.Header; import cz.msebera.android.httpclient.entity.StringEntity; import cz.msebera.android.httpclient.protocol.HTTP; import okhttp3.MediaType; import okhttp3.RequestBody; import qianmu.container.activity.H5.H5Data; +import qianmu.container.app.Constant; import qianmu.container.app.MyApplication; import qianmu.container.entity.AppVersionBean; import qianmu.container.entity.Device; @@ -45,6 +52,7 @@ import qianmu.container.mqtt.CloseMqttBean; import qianmu.container.mqtt.MqttDataBean; import qianmu.container.util.AesUtil; import qianmu.container.util.DeviceUtil; +import qianmu.container.util.FileUtil; import qianmu.container.util.GsonUtil; import qianmu.container.util.LoggerUtil; import qianmu.container.util.MusicUtil; @@ -683,7 +691,7 @@ public class DeviceData extends BaseData { } //GET方式获取离线数据 - public static void queryOfflineDataByInterfaceToGet(String url,QueryFinishListener finishListener) { + public static void queryOfflineDataByInterfaceToGet(Context context, String url, QueryFinishListener finishListener) { AsyncHttpClient client; if(url.contains("https")){ client = new AsyncHttpClient(true, 80, 443); @@ -692,58 +700,54 @@ public class DeviceData extends BaseData { } client.setTimeout(20000); client.setMaxRetriesAndTimeout(0, 20000); - client.get(url, new AsyncHttpResponseHandler() { - @Override - public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { - try { - String response = new String(responseBody).replace("\\\\", "/"); - saveInterfaceRequest(response); - } catch (Throwable t) { -// LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); - } - if (finishListener != null) finishListener.onFinish(); - } - - @Override - public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { - - if (finishListener != null) finishListener.onFinish(); - } - }); - } - //POST方式获取离线数据 多添加一个JSON请求体(参数必须是JSON格式) - public static void queryOfflineDataByInterfaceToPost(String url, String jsonData, QueryFinishListener finishListener) { - try { - AsyncHttpClient client; - if(url.contains("https")){ - client = new AsyncHttpClient(true, 80, 443); - }else { - client = new AsyncHttpClient(); - } - client.setTimeout(20000); - client.setMaxRetriesAndTimeout(0, 20000); -// StringEntity entity = new StringEntity(jsonData); - StringEntity entity = new StringEntity(jsonData, HTTP.UTF_8); - client.post(MyApplication.getInstance().getApplicationContext(), url, entity, RequestParams.APPLICATION_JSON, new AsyncHttpResponseHandler() { + OkGo.get(url) // 使用泛型指定响应数据类型为 String + .tag(context) // 设置请求的 tag,用于取消请求 + .execute(new StringCallback() { @Override - public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { + public void onSuccess(com.lzy.okgo.model.Response response) { try { - String response = new String(responseBody).replace("\\\\", "/"); -// Log.d("response", response); - saveInterfaceRequest(response); + String responseData = response.body().replace("\\\\", "/"); + saveInterfaceRequest(responseData); } catch (Throwable t) { -// LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); + // LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); } if (finishListener != null) finishListener.onFinish(); } - + // 请求失败 @Override - public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { - + public void onError(com.lzy.okgo.model.Response response) { + Throwable error = response.getException(); // 获取错误信息 + LoggerUtil.e("请求失败:"+url, error.getMessage()); if (finishListener != null) finishListener.onFinish(); } }); + } + + //POST方式获取离线数据 多添加一个JSON请求体(参数必须是JSON格式) + public static void queryOfflineDataByInterfaceToPost(Context context, String url, String jsonData, QueryFinishListener finishListener) { + try { + OkGo.post(url) + .tag(context) + .upJson(jsonData) // 将 JSON 字符串作为请求体发送 + .execute(new StringCallback() { + @Override + public void onSuccess(com.lzy.okgo.model.Response response) { + try { + String responseData = response.body().replace("\\\\", "/"); + saveInterfaceRequest(responseData); + } catch (Throwable t) { +// LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); + } + if (finishListener != null) finishListener.onFinish(); + } + + @Override + public void onError(com.lzy.okgo.model.Response response) { + Log.e("OkGoExample", response.getException().getMessage()); + if (finishListener != null) finishListener.onFinish(); + } + }); } catch (Throwable t) { if (finishListener != null) finishListener.onFinish(); // LoggerUtil.e("queryOfflineDataByInterface", StringUtil.getThrowableStr(t)); diff --git a/app/src/main/java/qianmu/container/data/PowerData.java b/app/src/main/java/qianmu/container/data/PowerData.java index 43481b5..ee78b5e 100644 --- a/app/src/main/java/qianmu/container/data/PowerData.java +++ b/app/src/main/java/qianmu/container/data/PowerData.java @@ -140,7 +140,7 @@ public class PowerData extends BaseData { String dataJson = getDataJson(NAME, POWER_INFO, "{}"); if(newTimeInfo.equals(dataJson)){ - if(Constant.androidBoardType.equals("ys") && "".equals(isSetOver)){ // 亿盛有时候设置开机时间不成功 + if(Constant.androidBoardType.equals("ys") && "".equals(isSetOver) && !StringUtil.isEmpty(parameter)){ // 亿盛有时候设置开机时间不成功 MyManager manager = MyManager.getInstance(MyApplication.getInstance()); String onTime = manager.getPowerOnTime(); long currentLong = System.currentTimeMillis();//当前时间