feat: 增加请求弹窗和拒绝说明

This commit is contained in:
2026-07-15 21:40:00 +08:00
parent 839a980b45
commit f1457e68eb
13 changed files with 645 additions and 5 deletions

View File

@@ -289,6 +289,13 @@ public class MainActivity extends AppCompatActivity {
case "TARGET_OFFLINE":
handleTargetOffline(message);
break;
case "CONNECTION_REJECTED":
handleConnectionRejected(message);
break;
case "REQUEST_ERROR":
case "REQUEST_TIMEOUT":
handleRequestAborted(message);
break;
}
}
@@ -307,11 +314,48 @@ public class MainActivity extends AppCompatActivity {
Log.w(TAG, "Target device " + offlineId + " is offline");
}
/**
* 被控端拒绝了连接请求:提示用户并复位到未连接状态。
*/
private void handleConnectionRejected(SignalMessage message) {
String targetId = message.getToDeviceId();
String payload = message.getPayload();
String text = (payload != null && !payload.isEmpty())
? payload
: "目标被控端拒绝了连接请求";
String finalText = text;
runOnUiThread(() -> {
tvStatus.setText("状态: " + finalText);
Toast.makeText(MainActivity.this, finalText, Toast.LENGTH_LONG).show();
updateUI(false);
});
Log.w(TAG, "Connection request to " + targetId + " was rejected by controlled device");
}
/**
* 连接请求被服务器拒绝REQUEST_ERROR或应答超时REQUEST_TIMEOUT提示并复位。
*/
private void handleRequestAborted(SignalMessage message) {
String payload = message.getPayload();
String text = (payload != null && !payload.isEmpty())
? payload
: "连接请求失败";
String finalText = text;
runOnUiThread(() -> {
tvStatus.setText("状态: " + finalText);
Toast.makeText(MainActivity.this, finalText, Toast.LENGTH_LONG).show();
updateUI(false);
});
Log.w(TAG, "Connection request aborted: " + finalText);
}
private void handleAnswer(SignalMessage message) {
try {
JsonObject payload = gson.fromJson(message.getPayload(), JsonObject.class);
String sdp = payload.get("sdp").getAsString();
if (webRtcClient != null) {
// 被控端已接受连接请求,进入 WebRTC 协商阶段。
runOnUiThread(() -> tvStatus.setText("状态: 被控端已接受连接,正在建立连接..."));
webRtcClient.handleAnswer(sdp);
}
} catch (Exception e) {

View File

@@ -285,6 +285,7 @@ public class WebRtcClient {
}
private void sendOffer(String sdp, String controlledId) {
Log.e(TAG, "sendOffer: " );
SignalMessage msg = new SignalMessage();
msg.setType("OFFER");
msg.setFromDeviceId(deviceId);
@@ -299,6 +300,7 @@ public class WebRtcClient {
}
private void sendIceCandidate(IceCandidate candidate, String controlledId) {
Log.e(TAG, "sendIceCandidate: " );
SignalMessage msg = new SignalMessage();
msg.setType("ICE_CANDIDATE");
msg.setFromDeviceId(deviceId);