Final fixes for Android O pointer capture

This commit is contained in:
Cameron Gutman
2017-06-08 18:17:34 -07:00
parent 5d6094df97
commit f6a0990432
4 changed files with 40 additions and 25 deletions

View File

@@ -32,7 +32,7 @@ public class AndroidNativePointerCaptureProvider extends InputCaptureProvider {
}
@Override
public boolean isCapturing() {
public boolean isCapturingActive() {
return targetView.hasPointerCapture();
}

View File

@@ -9,22 +9,21 @@ import com.limelight.binding.input.evdev.EvdevListener;
public class InputCaptureManager {
public static InputCaptureProvider getInputCaptureProvider(Activity activity, EvdevListener rootListener) {
// Shield capture is preferred because it can capture when the cursor is over
// the system UI. Android N native capture can only capture over views owned
// by the application.
if (ShieldCaptureProvider.isCaptureProviderSupported()) {
LimeLog.info("Using NVIDIA mouse capture extension");
return new ShieldCaptureProvider(activity);
}
else if (AndroidNativePointerCaptureProvider.isCaptureProviderSupported()) {
if (AndroidNativePointerCaptureProvider.isCaptureProviderSupported()) {
LimeLog.info("Using Android O+ native mouse capture");
return new AndroidNativePointerCaptureProvider(activity.findViewById(R.id.surfaceView));
}
else if (ShieldCaptureProvider.isCaptureProviderSupported()) {
LimeLog.info("Using NVIDIA mouse capture extension");
return new ShieldCaptureProvider(activity);
}
else if (EvdevCaptureProvider.isCaptureProviderSupported()) {
LimeLog.info("Using Evdev mouse capture");
return new EvdevCaptureProvider(activity, rootListener);
}
else if (AndroidPointerIconCaptureProvider.isCaptureProviderSupported()) {
// Android N's native capture can't capture over system UI elements
// so we want to only use it if there's no other option.
LimeLog.info("Using Android N+ pointer hiding");
return new AndroidPointerIconCaptureProvider(activity);
}

View File

@@ -14,7 +14,11 @@ public abstract class InputCaptureProvider {
public void destroy() {}
public boolean isCapturing() {
public boolean isCapturingEnabled() {
return isCapturing;
}
public boolean isCapturingActive() {
return isCapturing;
}