Browse Source

调整蓝牙设备链接逻辑

master
白凤吉 4 months ago
parent
commit
3f902dccc0
  1. 4
      app/src/main/assets/web/asset-manifest.json
  2. 2
      app/src/main/assets/web/index.html
  3. 4
      app/src/main/assets/web/static/js/main.d1cfebe4.js
  4. 0
      app/src/main/assets/web/static/js/main.d1cfebe4.js.LICENSE.txt
  5. 20
      app/src/main/java/com/iflytop/profilometer/api/sync/SyncApi.java
  6. 9
      app/src/main/java/com/iflytop/profilometer/api/sync/SyncRoutes.kt
  7. 21
      app/src/main/java/com/iflytop/profilometer/api/ws/BleWebsocketManager.java
  8. 22
      app/src/main/java/com/iflytop/profilometer/dao/SyncTaskDao.java

4
app/src/main/assets/web/asset-manifest.json

@ -1,7 +1,7 @@
{
"files": {
"main.css": "./static/css/main.3543332f.css",
"main.js": "./static/js/main.19719279.js",
"main.js": "./static/js/main.d1cfebe4.js",
"static/js/206.d71bd05f.chunk.js": "./static/js/206.d71bd05f.chunk.js",
"static/media/icon_tab3_u.svg": "./static/media/icon_tab3_u.6d18cbd7c4dc6a54f745fdfcc7716050.svg",
"static/media/icon_tab3_s.svg": "./static/media/icon_tab3_s.b0a9cbf5ecee59829c9de63a2e9de169.svg",
@ -22,6 +22,6 @@
},
"entrypoints": [
"static/css/main.3543332f.css",
"static/js/main.19719279.js"
"static/js/main.d1cfebe4.js"
]
}

2
app/src/main/assets/web/index.html

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"/><title>廓形仪</title><script defer="defer" src="./static/js/main.19719279.js"></script><link href="./static/css/main.3543332f.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>function setupWebViewJavascriptBridge(e){if(window.WebViewJavascriptBridge)return e(WebViewJavascriptBridge);if(/android/i.test(navigator.userAgent))document.addEventListener("WebViewJavascriptBridgeReady",(function(){e(WebViewJavascriptBridge)}),!1);else{if(window.WVJBCallbacks)return window.WVJBCallbacks.push(e);window.WVJBCallbacks=[e];var i=document.createElement("iframe");i.style.display="none",i.src="https://__bridge_loaded__",document.documentElement.appendChild(i),setTimeout((function(){document.documentElement.removeChild(i)}),0)}}setupWebViewJavascriptBridge((function(e){window.bridge=e}));var SyncBridgeJS={call:function(e,i){return prompt("sync/syncBridge/"+e,i)}}</script></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"/><title>廓形仪</title><script defer="defer" src="./static/js/main.d1cfebe4.js"></script><link href="./static/css/main.3543332f.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>function setupWebViewJavascriptBridge(e){if(window.WebViewJavascriptBridge)return e(WebViewJavascriptBridge);if(/android/i.test(navigator.userAgent))document.addEventListener("WebViewJavascriptBridgeReady",(function(){e(WebViewJavascriptBridge)}),!1);else{if(window.WVJBCallbacks)return window.WVJBCallbacks.push(e);window.WVJBCallbacks=[e];var i=document.createElement("iframe");i.style.display="none",i.src="https://__bridge_loaded__",document.documentElement.appendChild(i),setTimeout((function(){document.documentElement.removeChild(i)}),0)}}setupWebViewJavascriptBridge((function(e){window.bridge=e}));var SyncBridgeJS={call:function(e,i){return prompt("sync/syncBridge/"+e,i)}}</script></body></html>

4
app/src/main/assets/web/static/js/main.d1cfebe4.js
File diff suppressed because it is too large
View File

0
app/src/main/assets/web/static/js/main.19719279.js.LICENSE.txt → app/src/main/assets/web/static/js/main.d1cfebe4.js.LICENSE.txt

20
app/src/main/java/com/iflytop/profilometer/api/sync/SyncApi.java

@ -61,6 +61,26 @@ public class SyncApi {
}
/**
* 获取同步任务剩余数量与状态
*/
public String progress() {
SyncTaskDao syncTaskDao = new SyncTaskDao(context);
Map<String, Object> map = new HashMap<>();
int remaining = syncTaskDao.getSyncTaskCountByStatus("wait");
map.put("remaining", remaining);//剩余未同步数量
int fail = syncTaskDao.getSyncTaskCountByStatus("fail");
map.put("fail", fail);//同步失败数量
int total = syncTaskDao.getSyncTaskCount();
map.put("total", total);//总数量
if (remaining > 0) {
map.put("finish", false);//是否同步完成true 表示全部完成
} else {
map.put("finish", true);//是否同步完成true 表示全部完成
}
return Result.success(map);
}
/**
* 清空已完成的同步任务
*/
public String emptyFinish() {

9
app/src/main/java/com/iflytop/profilometer/api/sync/SyncRoutes.kt

@ -26,6 +26,7 @@ fun Routing.syncRoutes(context: Context) {
val jsonResponse = api.list(pageNum, size)
call.respondText(jsonResponse, ContentType.Application.Json)
}
/**
*
*/
@ -38,6 +39,14 @@ fun Routing.syncRoutes(context: Context) {
}
/**
*
*/
post("/api/sync/progress") {
val jsonResponse = api.progress()
call.respondText(jsonResponse, ContentType.Application.Json)
}
/**
*
*/
post("/api/sync/empty-all") {

21
app/src/main/java/com/iflytop/profilometer/api/ws/BleWebsocketManager.java

@ -55,20 +55,17 @@ public class BleWebsocketManager {
bleMap.put("name", gattDevice.getName());
bleMap.put("linked", true);
bleList.add(bleMap);
}
for (BluetoothDevice bluetoothDevice : scannedDevices) {
String mac = bluetoothDevice.getAddress();
boolean exists = bleList.stream() .anyMatch(map -> mac.equals(map.get("mac")));
if(! exists){
Map<String, Object> bleMap = new HashMap<>();
bleMap.put("mac", mac);
bleMap.put("name", bluetoothDevice.getName() == null ? "未命名" : bluetoothDevice.getName());
if (gatt != null && mac.equals(gatt.getDevice().getAddress())) {
bleMap.put("linked", true);
} else {
}else{
for (BluetoothDevice bluetoothDevice : scannedDevices) {
String mac = bluetoothDevice.getAddress();
boolean exists = bleList.stream() .anyMatch(map -> mac.equals(map.get("mac")));
if(! exists){
Map<String, Object> bleMap = new HashMap<>();
bleMap.put("mac", mac);
bleMap.put("name", bluetoothDevice.getName() == null ? "未命名" : bluetoothDevice.getName());
bleMap.put("linked", false);
bleList.add(bleMap);
}
bleList.add(bleMap);
}
}
bleList.sort(Comparator.comparing(map -> (String) map.get("mac")));

22
app/src/main/java/com/iflytop/profilometer/dao/SyncTaskDao.java

@ -168,7 +168,27 @@ public class SyncTaskDao {
}
/**
* 获取指定 syncStatus 的数据数量
*
* @param syncStatus 指定的同步状态例如 "wait""finish""fail"
* @return 满足条件的数据数量
*/
public int getSyncTaskCountByStatus(String syncStatus) {
int count = 0;
SQLiteDatabase db = dbHelper.getReadableDatabase();
// 添加 WHERE 条件查询指定状态的记录数量
Cursor cursor = db.rawQuery("SELECT COUNT(*) FROM " + MyDatabaseHelper.TABLE_SYNC_TASK + " WHERE sync_status = ?", new String[]{syncStatus});
if (cursor.moveToFirst()) {
count = cursor.getInt(0);
}
cursor.close();
db.close();
return count;
}
/**
* 删除所有 sync_status 字段值为 "finish" 的同步任务记录
*
* @return 被删除的记录数
*/
public int deleteFinishedSyncTasks() {
@ -181,6 +201,7 @@ public class SyncTaskDao {
/**
* 获取所有 sync_status 字段值不等于 "finish" 的同步任务记录 create_time 倒序排列
*
* @return 同步任务记录列表
*/
@SuppressLint("Range")
@ -224,7 +245,6 @@ public class SyncTaskDao {
}
// 根据 id 查询同步任务记录
@SuppressLint("Range")
public SyncTask getSyncTaskById(long id) {

Loading…
Cancel
Save