У меня есть проект libgdx в студии Android. В классе AndroidLauncher я запускаю ApplicationAdapter под названием ClockActivity, а также регистрирую гостевой диск.Libgdx: приложение вылетает с вызовом CalledFromWrongThreadException, когда GestureDetector пытается изменить яркость экрана
public class AndroidLauncher extends AndroidApplication {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
ClockActivity clockActivity = new ClockActivity();
Gdx.input.setInputProcessor(new GestureDetector(new GestureHandler()));
}
class GestureHandler implements GestureDetector.GestureListener {
@Override
public boolean pan(float x, float y, float deltaX, float deltaY) {
WindowManager.LayoutParams layout;
Gdx.app.log("LOG:", "pan" + deltaY);
layout = getWindow().getAttributes();
float currentValue = layout.screenBrightness;
layout.screenBrightness = currentValue - 10;
getWindow().setAttributes(layout);
return false;
}
}
}
ClockActivity расширяет класс ApplicationAdapter, и его задача заключается в отображении текущего системного времени на экране.
public class ClockActivity extends ApplicationAdapter {
@Override
public void create() {
Gdx.graphics.setContinuousRendering(true);
}
@Override
public void render() {
// my job is to display time
}
}
Когда я запускаю на своем телефоне Android, и я пытаюсь скорректировать надежду настроить яркость. Тем не менее, приложение выходит из строя со следующим исключением.
E/AndroidRuntime: FATAL EXCEPTION: GLThread 42617
Process: com.mygdx.clock, PID: 25614
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6293)
at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:900)
at android.view.View.requestLayout(View.java:17378)
at android.view.View.setLayoutParams(View.java:11373)
at android.view.WindowManagerGlobal.updateViewLayout(WindowManagerGlobal.java:302)
at android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:74)
at android.app.Activity.onWindowAttributesChanged(Activity.java:2608)
at android.view.Window.dispatchWindowAttributesChanged(Window.java:832)
at com.android.internal.policy.impl.PhoneWindow.dispatchWindowAttributesChanged(PhoneWindow.java:3879)
at android.view.Window.setAttributes(Window.java:863)
at com.mygdx.clock.AndroidLauncher$GestureHandler.pan(AndroidLauncher.java:99)
at com.badlogic.gdx.input.GestureDetector.touchDragged(GestureDetector.java:159)
at com.badlogic.gdx.input.GestureDetector.touchDragged(GestureDetector.java:126)
at com.badlogic.gdx.backends.android.AndroidInput.processEvents(AndroidInput.java:382)
at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:457)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1522)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)
Я не могу понять ошибку CalledFromWrongThreadException. Пожалуйста помоги.
Спасибо, что работали ... – antman