Skip to content

Commit 095968e

Browse files
committed
Adding sensor delay setting for android
1 parent 45842c0 commit 095968e

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

core/project_settings.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,6 +1148,10 @@ ProjectSettings::ProjectSettings() {
11481148
Compression::gzip_level = GLOBAL_DEF("compression/formats/gzip/compression_level", Z_DEFAULT_COMPRESSION);
11491149
custom_prop_info["compression/formats/gzip/compression_level"] = PropertyInfo(Variant::INT, "compression/formats/gzip/compression_level", PROPERTY_HINT_RANGE, "-1,9,1");
11501150

1151+
// this is only for android but needs a place, setting sensor precision
1152+
GLOBAL_DEF("input_devices/sensors/sensor_delay", "Game");
1153+
set_custom_property_info("input_devices/sensors/sensor_delay", PropertyInfo(Variant::STRING, "input_devices/sensors/sensor_delay", PROPERTY_HINT_ENUM, "Fastest,Game,Normal,UI"));
1154+
11511155
using_datapack = false;
11521156
}
11531157

platform/android/java/src/org/godotengine/godot/Godot.java

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
120120
private boolean mStatePaused;
121121
private int mState;
122122
private boolean keep_screen_on = true;
123+
private int sensor_delay = SensorManager.SENSOR_DELAY_GAME;
123124

124125
static private Intent mCurrentIntent;
125126

@@ -279,7 +280,7 @@ public void onVideoInit() {
279280
// ...add to FrameLayout
280281
layout.addView(edittext);
281282

282-
mView = new GodotView(getApplication(), io, use_gl3, use_32_bits, use_debug_opengl,this);
283+
mView = new GodotView(getApplication(), io, use_gl3, use_32_bits, use_debug_opengl, this);
283284
layout.addView(mView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
284285
edittext.setView(mView);
285286
io.setEdit(edittext);
@@ -420,18 +421,29 @@ private void initializeGodot() {
420421
command_line = new_cmdline;
421422
}
422423

424+
String sensor_delay_string = GodotLib.getGlobal("input_devices/sensors/sensor_delay");
425+
if (sensor_delay_string == "Fastest") {
426+
sensor_delay = SensorManager.SENSOR_DELAY_FASTEST;
427+
} else if (sensor_delay_string == "Game") {
428+
sensor_delay = SensorManager.SENSOR_DELAY_GAME;
429+
} else if (sensor_delay_string == "Normal") {
430+
sensor_delay = SensorManager.SENSOR_DELAY_NORMAL;
431+
} else if (sensor_delay_string == "UI") {
432+
sensor_delay = SensorManager.SENSOR_DELAY_UI;
433+
}
434+
423435
io = new GodotIO(this);
424436
io.unique_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
425437
GodotLib.io = io;
426438
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
427439
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
428-
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME);
440+
mSensorManager.registerListener(this, mAccelerometer, sensor_delay);
429441
mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
430-
mSensorManager.registerListener(this, mGravity, SensorManager.SENSOR_DELAY_GAME);
442+
mSensorManager.registerListener(this, mGravity, sensor_delay);
431443
mMagnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
432-
mSensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_DELAY_GAME);
444+
mSensorManager.registerListener(this, mMagnetometer, sensor_delay);
433445
mGyroscope = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
434-
mSensorManager.registerListener(this, mGyroscope, SensorManager.SENSOR_DELAY_GAME);
446+
mSensorManager.registerListener(this, mGyroscope, sensor_delay);
435447

436448
GodotLib.initialize(this, io.needsReloadHooks(), getAssets(), use_apk_expansion);
437449

@@ -660,10 +672,10 @@ public void run() {
660672
GodotLib.focusin();
661673
}
662674
});
663-
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME);
664-
mSensorManager.registerListener(this, mGravity, SensorManager.SENSOR_DELAY_GAME);
665-
mSensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_DELAY_GAME);
666-
mSensorManager.registerListener(this, mGyroscope, SensorManager.SENSOR_DELAY_GAME);
675+
mSensorManager.registerListener(this, mAccelerometer, sensor_delay);
676+
mSensorManager.registerListener(this, mGravity, sensor_delay);
677+
mSensorManager.registerListener(this, mMagnetometer, sensor_delay);
678+
mSensorManager.registerListener(this, mGyroscope, sensor_delay);
667679

668680
if (use_immersive && Build.VERSION.SDK_INT >= 19.0) { // check if the application runs on an android 4.4+
669681
Window window = getWindow();

0 commit comments

Comments
 (0)