Stop accelerometer when the app is put to background, and start it when it's resumed - I did not test this patch yet.
This commit is contained in:
@@ -41,11 +41,26 @@ class AccelerometerReader implements SensorEventListener {
|
||||
|
||||
private SensorManager _manager = null;
|
||||
|
||||
public AccelerometerReader(Activity context) {
|
||||
public AccelerometerReader(Activity context)
|
||||
{
|
||||
System.out.println("libSDL: accelerometer start required: " + String.valueOf(Globals.UseAccelerometerAsArrowKeys));
|
||||
_manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
|
||||
start();
|
||||
}
|
||||
|
||||
public synchronized void stop()
|
||||
{
|
||||
if( _manager != null )
|
||||
{
|
||||
System.out.println("libSDL: stopping accelerometer");
|
||||
_manager.unregisterListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void start()
|
||||
{
|
||||
if( Globals.UseAccelerometerAsArrowKeys )
|
||||
{
|
||||
_manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
|
||||
if( _manager != null )
|
||||
{
|
||||
System.out.println("libSDL: starting accelerometer");
|
||||
@@ -55,13 +70,6 @@ class AccelerometerReader implements SensorEventListener {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void stop() {
|
||||
if( _manager != null )
|
||||
{
|
||||
_manager.unregisterListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void onSensorChanged(SensorEvent event) {
|
||||
|
||||
@@ -84,7 +92,6 @@ class AccelerometerReader implements SensorEventListener {
|
||||
|
||||
public synchronized void onAccuracyChanged(Sensor s, int a) {
|
||||
}
|
||||
|
||||
|
||||
private native void nativeAccelerometer(float accX, float accY, float accZ);
|
||||
private native void nativeOrientation(float accX, float accY, float accZ);
|
||||
|
||||
@@ -425,7 +425,7 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer
|
||||
public static native void nativeTextInputFinished();
|
||||
|
||||
private MainActivity context = null;
|
||||
private AccelerometerReader accelerometer = null;
|
||||
public AccelerometerReader accelerometer = null;
|
||||
|
||||
private EGL10 mEgl = null;
|
||||
private EGLDisplay mEglDisplay = null;
|
||||
@@ -476,6 +476,7 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
mRenderer.accelerometer.stop();
|
||||
super.onPause();
|
||||
mRenderer.mPaused = true;
|
||||
};
|
||||
@@ -491,6 +492,7 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
|
||||
System.out.println("libSDL: DemoGLSurfaceView.onResume(): mRenderer.mGlSurfaceCreated " + mRenderer.mGlSurfaceCreated + " mRenderer.mPaused " + mRenderer.mPaused);
|
||||
if( mRenderer.mGlSurfaceCreated && ! mRenderer.mPaused || Globals.NonBlockingSwapBuffers )
|
||||
mRenderer.nativeGlContextRecreated();
|
||||
mRenderer.accelerometer.start();
|
||||
};
|
||||
|
||||
// This seems like redundant code - it handled in MainActivity.java
|
||||
|
||||
Reference in New Issue
Block a user