1 // Copyright 2015-present 650 Industries. All rights reserved. 2 3 package versioned.host.exp.exponent.modules.api; 4 5 import android.content.Context; 6 import android.hardware.SensorManager; 7 8 import com.facebook.react.bridge.ReactApplicationContext; 9 import com.facebook.react.bridge.ReactContextBaseJavaModule; 10 import com.facebook.react.common.ShakeDetector; 11 import com.facebook.react.modules.core.DeviceEventManagerModule; 12 13 import host.exp.exponent.analytics.EXL; 14 15 public class ShakeModule extends ReactContextBaseJavaModule { 16 private static final String TAG = ShakeModule.class.getSimpleName(); 17 18 private ShakeDetector mShakeDetector; 19 ShakeModule(ReactApplicationContext reactContext)20 public ShakeModule(ReactApplicationContext reactContext) { 21 super(reactContext); 22 23 mShakeDetector = new ShakeDetector(new ShakeDetector.ShakeListener() { 24 @Override 25 public void onShake() { 26 ShakeModule.this.onShake(); 27 } 28 }); 29 mShakeDetector.start((SensorManager) reactContext.getSystemService(Context.SENSOR_SERVICE)); 30 } 31 32 @Override getName()33 public String getName() { 34 return "ExponentShake"; 35 } 36 onShake()37 private void onShake() { 38 try { 39 getReactApplicationContext() 40 .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) 41 .emit("Exponent.shake", null); 42 } catch (Throwable e) { 43 EXL.e(TAG, e); 44 } 45 } 46 47 @Override onCatalystInstanceDestroy()48 public void onCatalystInstanceDestroy() { 49 super.onCatalystInstanceDestroy(); 50 mShakeDetector.stop(); 51 } 52 } 53