Add support for Android 16.1 keyboard capture

Fixes #975
Fixes #1281
Fixes #1505
This commit is contained in:
Cameron Gutman committed 2026-09-01 21:20:38 -05:00
1 parent abde6021e8
commit ddb674a9b9
2 files changed
+10 -2

No files matched your search

+1
View File
@@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAPTURE_KEYBOARD" />
<uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA"/>
<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA"/>
+9 -2
View File
@@ -673,6 +673,13 @@ public class Game extends Activity implements SurfaceHolder.Callback,
}
public void setMetaKeyCaptureState(boolean enabled) {
// Android has native keyboard capture support starting in API 36.1
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA && Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
WindowManager.LayoutParams windowLayoutParams = getWindow().getAttributes();
windowLayoutParams.setKeyboardCaptureEnabled(enabled);
getWindow().setAttributes(windowLayoutParams);
}
else {
// This uses custom APIs present on some Samsung devices to allow capture of
// meta key events while streaming.
try {
@@ -690,8 +697,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
else {
LimeLog.warning("SemWindowManager.getInstance() returned null");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException ignored) {
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
@@ -700,6 +706,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
e.printStackTrace();
}
}
}
@Override
public void onUserLeaveHint() {