diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 10bc276..8b9e862 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -47,7 +47,7 @@ diff --git a/android/app/src/main/kotlin/com/wirelesstextsyncer/wireless_text_syncer_android/ConnectionService.kt b/android/app/src/main/kotlin/com/wirelesstextsyncer/wireless_text_syncer_android/ConnectionService.kt index c790787..f1f7dcb 100644 --- a/android/app/src/main/kotlin/com/wirelesstextsyncer/wireless_text_syncer_android/ConnectionService.kt +++ b/android/app/src/main/kotlin/com/wirelesstextsyncer/wireless_text_syncer_android/ConnectionService.kt @@ -221,9 +221,27 @@ class ConnectionService : Service() { return false } + return sendAction(socket, "replaceAll", text) + } + + fun sendEnter(): Boolean { + Log.d("WTS", "ConnectionService.sendEnter connected=${state.connected}") + val socket = currentSocket ?: return false + if (!state.connected) { + return false + } + + return sendAction(socket, "enter", null) + } + + private fun sendAction(socket: WebSocket, action: String, text: String?): Boolean { val payload = JSONObject() - .put("action", "replaceAll") - .put("text", text) + .put("action", action) + .apply { + if (text != null) { + put("text", text) + } + } .toString() return socket.send(payload) } diff --git a/android/app/src/main/kotlin/com/wirelesstextsyncer/wireless_text_syncer_android/MainActivity.kt b/android/app/src/main/kotlin/com/wirelesstextsyncer/wireless_text_syncer_android/MainActivity.kt index 2578932..0f3e180 100644 --- a/android/app/src/main/kotlin/com/wirelesstextsyncer/wireless_text_syncer_android/MainActivity.kt +++ b/android/app/src/main/kotlin/com/wirelesstextsyncer/wireless_text_syncer_android/MainActivity.kt @@ -45,6 +45,10 @@ class MainActivity : FlutterActivity() { Log.d(tag, "MethodChannel sendText length=${text.length}") result.success(ConnectionService.sendText(text)) } + "sendEnter" -> { + Log.d(tag, "MethodChannel sendEnter") + result.success(ConnectionService.sendEnter()) + } "getState" -> { Log.d(tag, "MethodChannel getState") result.success(ConnectionService.stateMap()) diff --git a/android/app/src/main/res/drawable-nodpi/app_icon_source.png b/android/app/src/main/res/drawable-nodpi/app_icon_source.png new file mode 100644 index 0000000..4518271 Binary files /dev/null and b/android/app/src/main/res/drawable-nodpi/app_icon_source.png differ diff --git a/android/app/src/main/res/drawable-nodpi/ic_quick_send_tile.png b/android/app/src/main/res/drawable-nodpi/ic_quick_send_tile.png new file mode 100644 index 0000000..0fe945f Binary files /dev/null and b/android/app/src/main/res/drawable-nodpi/ic_quick_send_tile.png differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4..f816e09 100644 Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b7..71e8177 100644 Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 09d4391..9e30770 100644 Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d..ed15640 100644 Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372e..1ddcd85 100644 Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/lib/main.dart b/lib/main.dart index 99ee0d6..5150cf7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -123,6 +123,11 @@ class NativeConnectionApi { return result ?? false; } + Future sendEnter() async { + final result = await _methodChannel.invokeMethod('sendEnter'); + return result ?? false; + } + Future> startDiscovery() async { try { final result = await _methodChannel.invokeListMethod( @@ -341,15 +346,14 @@ class _InputSyncPageState extends State } final draft = inputController.text; - final textToSend = appendEnter ? '$draft\n' : draft; - setState(() { sendButtonState = SendButtonState.sending; }); try { - final sent = await api.sendText(textToSend); - if (!sent) { + final sent = await api.sendText(draft); + final enterSent = !sent || !appendEnter ? true : await api.sendEnter(); + if (!sent || !enterSent) { _showToast('发送失败,连接已断开'); setState(() { sendButtonState = SendButtonState.idle;