From 0a1f1228cbd9a10e32169e7ec172f3b8d360b54c Mon Sep 17 00:00:00 2001 From: "844143714@qq,com" <844143714@qq,com> Date: Thu, 30 Apr 2026 01:31:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=20PTT=20=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=BC=BA=E5=88=B6=E9=87=8D=E5=90=AF=E3=80=81?= =?UTF-8?q?=E8=A1=A5=E9=BD=90=E5=85=A8=E9=87=8F=20PTT=20=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=8F=8A=E5=9B=9E=E8=B0=83=E6=A1=A5=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kingway/ptt/CallBackResolution.java | 1 + .../com/example/kingway/ptt/CallBackUtil.java | 111 ++++++++++++------ .../java/com/stand/standapp/MainActivity.kt | 15 +++ 3 files changed, 89 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/com/example/kingway/ptt/CallBackResolution.java b/app/src/main/java/com/example/kingway/ptt/CallBackResolution.java index 107a36d..6ea642a 100644 --- a/app/src/main/java/com/example/kingway/ptt/CallBackResolution.java +++ b/app/src/main/java/com/example/kingway/ptt/CallBackResolution.java @@ -478,6 +478,7 @@ public class CallBackResolution { }; executor.scheduleAtFixedRate(task, 0, 40, TimeUnit.SECONDS); } else if (tempTxt.contains("账号已更新")) { + com.stand.standapp.MainActivity.showPttUpdateDialog(); } else if (tempTxt.contains("账号或密码错误")) { CallBackUtil.callBackLogin(false, ""); }else if (tempTxt.contains("请配置账号")) { diff --git a/app/src/main/java/com/example/kingway/ptt/CallBackUtil.java b/app/src/main/java/com/example/kingway/ptt/CallBackUtil.java index beb4c2f..f571301 100644 --- a/app/src/main/java/com/example/kingway/ptt/CallBackUtil.java +++ b/app/src/main/java/com/example/kingway/ptt/CallBackUtil.java @@ -68,7 +68,19 @@ public class CallBackUtil { * state true-成功, false-失败 */ public static void callBackOnMemberSuccess(boolean state, List dtos) { - + try { + org.json.JSONArray arr = new org.json.JSONArray(); + if (dtos != null && state) { + for (GroupMemberInfoDto dto : dtos) { + org.json.JSONObject obj = new org.json.JSONObject(); + obj.put("memberId", dto.getMemberId()); + obj.put("memberName", dto.getGmemberName()); + obj.put("status", dto.getStatus()); + arr.put(obj); + } + } + com.stand.standapp.MainActivity.executeJs("if(window.onPttEvent){window.onPttEvent('MemberList', " + arr.toString() + ");}"); + } catch (Exception e) {} } /** @@ -101,9 +113,17 @@ public class CallBackUtil { * GroupInfoDto 群组信息 * */ public static void callBackGroupInfo (ArrayList < GroupInfoDto > groupInfoDtos) { - for (GroupInfoDto groupInfoDto : groupInfoDtos) { - Log.d(TAG, "callBackGroupInfo: " + groupInfoDto.toString()); - } + try { + org.json.JSONArray arr = new org.json.JSONArray(); + for (GroupInfoDto dto : groupInfoDtos) { + org.json.JSONObject obj = new org.json.JSONObject(); + obj.put("groupId", dto.getGroupId()); + obj.put("groupName", dto.getGroupName()); + obj.put("groupNo", dto.getGroupNo()); + arr.put(obj); + } + com.stand.standapp.MainActivity.executeJs("if(window.onPttEvent){window.onPttEvent('GroupList', " + arr.toString() + ");}"); + } catch (Exception e) {} } /** @@ -112,44 +132,46 @@ public class CallBackUtil { * talkId 讲话用户ID * talkName 讲话用户名字 * */ - public static void callBackNotifySpker ( int speckType, String groupId, String - groupName, String talkId, String talkName){ - + public static void callBackNotifySpker ( int speckType, String groupId, String groupName, String talkId, String talkName){ + try { + org.json.JSONObject obj = new org.json.JSONObject(); + obj.put("speckType", speckType); + obj.put("groupId", groupId); + obj.put("groupName", groupName); + obj.put("talkId", talkId); + obj.put("talkName", talkName); + com.stand.standapp.MainActivity.executeJs("if(window.onPttEvent){window.onPttEvent('SpeakerUpdate', " + obj.toString() + ");}"); + } catch (Exception e) {} } - /** - * 对方讲话通知 - * playStatus 1表示开始讲话, 0 表示结束讲话 - * speckType 自己讲话状态: 0 : 表示自己无法讲话; 1 : 表示自己可以中断讲话人的讲话,可以进行强插讲话 - * groupId 所在群组Id - * groupName 所在群组名称 - * talkId 讲话用户Id - * talkName 讲话用户名称 - * */ - public static void callBackNotifyPlayStatus ( int playStatus, int speckType, String - groupId, String groupName, String talkId, String talkName){ - + public static void callBackNotifyPlayStatus ( int playStatus, int speckType, String groupId, String groupName, String talkId, String talkName){ + try { + org.json.JSONObject obj = new org.json.JSONObject(); + obj.put("playStatus", playStatus); + obj.put("speckType", speckType); + obj.put("groupId", groupId); + obj.put("groupName", groupName); + obj.put("talkId", talkId); + obj.put("talkName", talkName); + com.stand.standapp.MainActivity.executeJs("if(window.onPttEvent){window.onPttEvent('PlayStatus', " + obj.toString() + ");}"); + } catch (Exception e) {} } - /** - *临时呼叫信息通知 - * tempCallNotify: - * 临时呼叫xxx:表示被单呼,呼叫名:xxx - * 退出临时呼叫:表示退出单呼 - * 呼叫成功:表示单呼成功 - * 呼叫失败:表示单呼失败 - * */ public static void callBackTempCallNotify (String tempCallNotify){ - + try { + org.json.JSONObject obj = new org.json.JSONObject(); + obj.put("msg", tempCallNotify); + com.stand.standapp.MainActivity.executeJs("if(window.onPttEvent){window.onPttEvent('TempCall', " + obj.toString() + ");}"); + } catch (Exception e) {} } - /** - * 用户进入群组信息通知 - * userGroupId 用户所在的群组ID - * userGroupName 用户所在的群组名称 - * */ public static void callBackNotifyUpdateGroup (String userGroupId, String userGroupName){ - + try { + org.json.JSONObject obj = new org.json.JSONObject(); + obj.put("groupId", userGroupId); + obj.put("groupName", userGroupName); + com.stand.standapp.MainActivity.executeJs("if(window.onPttEvent){window.onPttEvent('UpdateGroup', " + obj.toString() + ");}"); + } catch (Exception e) {} } /** @@ -160,9 +182,16 @@ public class CallBackUtil { * longitude 经度 * time 时间 */ - public static void callBackNotifyLocationStatus ( int status, String userId,double latitude, - double longitude, String time){ - + public static void callBackNotifyLocationStatus ( int status, String userId,double latitude, double longitude, String time){ + try { + org.json.JSONObject obj = new org.json.JSONObject(); + obj.put("status", status); + obj.put("userId", userId); + obj.put("latitude", latitude); + obj.put("longitude", longitude); + obj.put("time", time); + com.stand.standapp.MainActivity.executeJs("if(window.onPttEvent){window.onPttEvent('LocationStatus', " + obj.toString() + ");}"); + } catch (Exception e) {} } /** @@ -242,7 +271,13 @@ public class CallBackUtil { * longitude 经度 * */ public static void callBackEnotifyAlarm (String memberName,double latitude, double longitude){ - + try { + org.json.JSONObject obj = new org.json.JSONObject(); + obj.put("memberName", memberName); + obj.put("latitude", latitude); + obj.put("longitude", longitude); + com.stand.standapp.MainActivity.executeJs("if(window.onPttEvent){window.onPttEvent('Alarm', " + obj.toString() + ");}"); + } catch (Exception e) {} } /** diff --git a/app/src/main/java/com/stand/standapp/MainActivity.kt b/app/src/main/java/com/stand/standapp/MainActivity.kt index 6ddc00b..3de114e 100644 --- a/app/src/main/java/com/stand/standapp/MainActivity.kt +++ b/app/src/main/java/com/stand/standapp/MainActivity.kt @@ -67,6 +67,21 @@ class MainActivity : AppCompatActivity() { } } + @JvmStatic + fun showPttUpdateDialog() { + instance?.runOnUiThread { + val ctx = instance ?: return@runOnUiThread + androidx.appcompat.app.AlertDialog.Builder(ctx) + .setTitle("账号更新") + .setMessage("您的 PTT 账号信息已被更新,需要重新登录以应用更改。\n请点击确认重启应用。") + .setCancelable(false) + .setPositiveButton("确认") { _, _ -> + com.stand.standapp.utils.AppKiller.killApp(ctx) + } + .show() + } + } + // 获取并清除待执行的 JS 代码(由 bridge.js 轮询) @JvmStatic fun pollPendingJs(): String {