Fix: hide gyro if not supported

This commit is contained in:
Mathias-Boulay 2024-11-22 20:12:57 +01:00
parent 383b3edd75
commit 19afab28f4
3 changed files with 21 additions and 2 deletions

View File

@ -19,6 +19,8 @@ import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.Cursor;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@ -1285,4 +1287,9 @@ public final class Tools {
sCompatibleRenderers = null;
System.gc();
}
public static boolean deviceSupportsGyro(@NonNull Context context) {
return ((SensorManager)context.getSystemService(Context.SENSOR_SERVICE)).getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null;
}
}

View File

@ -48,7 +48,10 @@ public abstract class QuickSettingSideDialog extends com.kdt.SideDialogView {
@Override
protected void onInflate() {
bindLayout();
Tools.runOnUiThread(this::setupListeners);
Tools.runOnUiThread(() -> {
this.setupListeners();
this.updateGyroCompatibility();
});
}
@Override
@ -187,6 +190,14 @@ public abstract class QuickSettingSideDialog extends com.kdt.SideDialogView {
mGyroSensitivityDisplayText.setVisibility(visibility);
}
private void updateGyroCompatibility() {
boolean isGyroAvailable = Tools.deviceSupportsGyro(mDialogContent.getContext());
if (!isGyroAvailable) {
mGyroSwitch.setVisibility(View.GONE);
updateGestureVisibility(false);
}
}
private void updateGestureVisibility(boolean isDisabled) {
int visibility = isDisabled ? View.GONE : View.VISIBLE;
mGestureDelayBar.setVisibility(visibility);

View File

@ -9,6 +9,7 @@ import android.os.Bundle;
import androidx.preference.PreferenceCategory;
import net.kdt.pojavlaunch.R;
import net.kdt.pojavlaunch.Tools;
import net.kdt.pojavlaunch.prefs.CustomSeekBarPreference;
import net.kdt.pojavlaunch.prefs.LauncherPreferences;
@ -62,7 +63,7 @@ public class LauncherPreferenceControlFragment extends LauncherPreferenceFragmen
Context context = getContext();
if(context != null) {
mGyroAvailable = ((SensorManager)context.getSystemService(Context.SENSOR_SERVICE)).getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null;
mGyroAvailable = Tools.deviceSupportsGyro(context);
}
PreferenceCategory gyroCategory = requirePreference("gyroCategory",
PreferenceCategory.class);