feat: 增加请求弹窗和拒绝说明
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user