修复局域网遥控按键溢出以及菜单键失效

This commit is contained in:
mtvpls
2026-06-19 16:15:00 +08:00
parent e9ac8f3067
commit 0b6c6e78e6
4 changed files with 40 additions and 63 deletions
@@ -181,26 +181,19 @@ public class MainActivity extends Activity implements RemoteCommandHandler {
return KeyEvent.KEYCODE_UNKNOWN;
}
private void dispatchLocalRemoteKey(String key, boolean repeat, String digit) {
if (webView == null || key == null) return;
String safeKey = key.replace("\\", "\\\\").replace("'", "\\'");
String safeDigit = digit == null ? "" : digit.replace("\\", "\\\\").replace("'", "\\'");
String script = "window.dispatchEvent(new CustomEvent('moontv:local-remote-key',{detail:{key:'"
+ safeKey + "',repeat:" + (repeat ? "true" : "false") + ",digit:'" + safeDigit + "'}}));";
webView.evaluateJavascript(script, null);
}
@Override
public void onRemoteKey(String key, boolean repeat, String digit) {
int keyCode = keyCodeForRemoteKey(key, digit);
if (keyCode == KeyEvent.KEYCODE_UNKNOWN) return;
mainHandler.post(() -> {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return;
}
long now = System.currentTimeMillis();
KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, keyCode, repeat ? 1 : 0);
KeyEvent up = new KeyEvent(now, now, KeyEvent.ACTION_UP, keyCode, 0);
if (customView != null) {
customView.dispatchKeyEvent(down);
customView.dispatchKeyEvent(up);
} else if (webView != null) {
webView.dispatchKeyEvent(down);
webView.dispatchKeyEvent(up);
}
});
mainHandler.post(() -> dispatchLocalRemoteKey(key, repeat, digit));
}
@Override