Rexsee传感器处理

来源:互联网 发布:centos hadoop 安装 编辑:程序博客网 时间:2024/06/06 14:28

RexseeSensorMagneticField 磁力传感器

package rexsee.sensor;import rexsee.core.browser.Browser;import rexsee.core.browser.clazz.JavascriptInterface;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;public class RexseeSensorMagneticField implements JavascriptInterface {public static final String INTERFACE_NAME = "MagneticField";@Overridepublic String getInterfaceName() {return mBrowser.application.resources.prefix + INTERFACE_NAME;}@Overridepublic JavascriptInterface getInheritInterface(Browser childBrowser) {return this;}@Overridepublic JavascriptInterface getNewInterface(Browser childBrowser) {return new RexseeSensorMagneticField(childBrowser);}public static final String EVENT_ONMAGNETICFIELDCHANGED = "onMagneticFieldChanged";private final Context mContext;private final Browser mBrowser;private final SensorManager mSensorManager;private final SensorEventListener mSensorListener;private final Sensor mSensor;private int mRate = SensorManager.SENSOR_DELAY_NORMAL;private int mCycle = 100; //millisecondsprivate int mEventCycle = 100; //millisecondsprivate float mAccuracyX = 0;private float mAccuracyY = 0;private float mAccuracyZ = 0;private long lastUpdate = -1;private long lastEvent = -1;private float x = -999f;private float y = -999f;private float z = -999f;public RexseeSensorMagneticField(Browser browser) {mContext = browser.getContext();mBrowser = browser;browser.eventList.add(EVENT_ONMAGNETICFIELDCHANGED);mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);mSensorListener = new SensorEventListener() {@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor.getType() != Sensor.TYPE_MAGNETIC_FIELD) return;long curTime = System.currentTimeMillis();if (lastUpdate == -1 || (curTime - lastUpdate) > mCycle) {lastUpdate = curTime;float lastX = x;float lastY = y;float lastZ = z;x = event.values[SensorManager.DATA_X];y = event.values[SensorManager.DATA_Y];z = event.values[SensorManager.DATA_Z];if (lastEvent == -1 || (curTime - lastEvent) > mEventCycle) {if ((mAccuracyX >= 0 && Math.abs(x - lastX) > mAccuracyX)|| (mAccuracyY >= 0 && Math.abs(y - lastY) > mAccuracyY)|| (mAccuracyZ >= 0 && Math.abs(z - lastZ) > mAccuracyZ)) {lastEvent = curTime;mBrowser.eventList.run(EVENT_ONMAGNETICFIELDCHANGED);}}}}};}public String getLastKnownX() {return (x == -999) ? "null" : String.valueOf(x);}public String getLastKnownY() {return (y == -999) ? "null" : String.valueOf(y);}public String getLastKnownZ() {return (z == -999) ? "null" : String.valueOf(z);}public void setRate(String rate) {mRate = SensorRate.getInt(rate);}public String getRate() {return SensorRate.getString(mRate);}public void setCycle(int milliseconds) {mCycle = milliseconds;}public int getCycle() {return mCycle;}public void setEventCycle(int milliseconds) {mEventCycle = milliseconds;}public int getEventCycle() {return mEventCycle;}public void setAccuracy(float x, float y, float z) {mAccuracyX = x;mAccuracyY = y;mAccuracyZ = z;}public float getAccuracyX() {return mAccuracyX;}public float getAccuracyY() {return mAccuracyY;}public float getAccuracyZ() {return mAccuracyZ;}public boolean isReady() {return (mSensor == null) ? false : true;}public void start() {if (isReady()) {mSensorManager.registerListener(mSensorListener, mSensor, mRate);} else {mBrowser.exception(getInterfaceName(), "Magnetic-field sensor is not found.");}}public void stop() {if (isReady()) {mSensorManager.unregisterListener(mSensorListener);}}}

RexseeSensorLight 光线传感器

package rexsee.sensor;import rexsee.core.browser.Browser;import rexsee.core.browser.clazz.JavascriptInterface;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;public class RexseeSensorLight implements JavascriptInterface {public static final String INTERFACE_NAME = "Light";@Overridepublic String getInterfaceName() {return mBrowser.application.resources.prefix + INTERFACE_NAME;}@Overridepublic JavascriptInterface getInheritInterface(Browser childBrowser) {return this;}@Overridepublic JavascriptInterface getNewInterface(Browser childBrowser) {return new RexseeSensorLight(childBrowser);}public static final String EVENT_ONLIGHTCHANGED = "onLightChanged";private final Context mContext;private final Browser mBrowser;private final SensorManager mSensorManager;private final SensorEventListener mSensorListener;private final Sensor mSensor;private int mRate = SensorManager.SENSOR_DELAY_NORMAL;private int mCycle = 100; //millisecondsprivate int mEventCycle = 100; //millisecondsprivate float mAccuracy = 0;private long lastUpdate = -1;private long lastEvent = -1;private float value = -999f;public RexseeSensorLight(Browser browser) {mContext = browser.getContext();mBrowser = browser;browser.eventList.add(EVENT_ONLIGHTCHANGED);mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);mSensorListener = new SensorEventListener() {@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor.getType() != Sensor.TYPE_LIGHT) return;long curTime = System.currentTimeMillis();if (lastUpdate == -1 || (curTime - lastUpdate) > mCycle) {lastUpdate = curTime;float lastValue = value;value = event.values[SensorManager.DATA_X];if (lastEvent == -1 || (curTime - lastEvent) > mEventCycle) {if (Math.abs(value - lastValue) > mAccuracy) {lastEvent = curTime;mBrowser.eventList.run(EVENT_ONLIGHTCHANGED);}}}}};}public String getLastKnownValue() {return (value == -999) ? "null" : String.valueOf(value);}public void setRate(String rate) {mRate = SensorRate.getInt(rate);}public String getRate() {return SensorRate.getString(mRate);}public void setCycle(int milliseconds) {mCycle = milliseconds;}public int getCycle() {return mCycle;}public void setEventCycle(int milliseconds) {mEventCycle = milliseconds;}public int getEventCycle() {return mEventCycle;}public void setAccuracy(float value) {mAccuracy = Math.abs(value);}public float getAccuracy() {return mAccuracy;}public boolean isReady() {return (mSensor == null) ? false : true;}public void start() {if (isReady()) {mSensorManager.registerListener(mSensorListener, mSensor, mRate);} else {mBrowser.exception(getInterfaceName(), "Light sensor is not found.");}}public void stop() {if (isReady()) {mSensorManager.unregisterListener(mSensorListener);}}}

 RexseeSensorAccelerometer 加速度传感器

package rexsee.sensor;import rexsee.core.browser.Browser;import rexsee.core.browser.clazz.JavascriptInterface;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;public class RexseeSensorAccelerometer implements JavascriptInterface {public static final String INTERFACE_NAME = "Accelerometer";@Overridepublic String getInterfaceName() {return mBrowser.application.resources.prefix + INTERFACE_NAME;}@Overridepublic JavascriptInterface getInheritInterface(Browser childBrowser) {return this;}@Overridepublic JavascriptInterface getNewInterface(Browser childBrowser) {return new RexseeSensorAccelerometer(childBrowser);}public static final String EVENT_ONACCELERATE = "onAccelerometerChanged";private final Context mContext;private final Browser mBrowser;private final SensorManager mSensorManager;private final SensorEventListener mSensorListener;private final Sensor mSensor;private int mRate = SensorManager.SENSOR_DELAY_NORMAL;private int mCycle = 100;private int mEventCycle = 100;private float mAccuracyX = 0;private float mAccuracyY = 0;private float mAccuracyZ = 0;private long lastUpdate = -1;private long lastEvent = -1;private float x = -999, y = -999, z = -999;public RexseeSensorAccelerometer(Browser browser) {mContext = browser.getContext();mBrowser = browser;browser.eventList.add(EVENT_ONACCELERATE);mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);mSensorListener = new SensorEventListener() {@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) return;long curTime = System.currentTimeMillis();if (lastUpdate == -1 || (curTime - lastUpdate) > mCycle) {lastUpdate = curTime;float lastX = x;float lastY = y;float lastZ = z;x = event.values[SensorManager.DATA_X];y = event.values[SensorManager.DATA_Y];z = event.values[SensorManager.DATA_Z];if (lastEvent == -1 || (curTime - lastEvent) > mEventCycle) {if ((mAccuracyX >= 0 && Math.abs(x - lastX) > mAccuracyX)|| (mAccuracyY >= 0 && Math.abs(y - lastY) > mAccuracyY)|| (mAccuracyZ >= 0 && Math.abs(z - lastZ) > mAccuracyZ)) {lastEvent = curTime;mBrowser.eventList.run(EVENT_ONACCELERATE);}}}}};}public String getLastKnownX() {return (x == -999) ? "null" : String.valueOf(x);}public String getLastKnownY() {return (y == -999) ? "null" : String.valueOf(y);}public String getLastKnownZ() {return (z == -999) ? "null" : String.valueOf(z);}public void setRate(String rate) {mRate = SensorRate.getInt(rate);}public String getRate() {return SensorRate.getString(mRate);}public void setCycle(int milliseconds) {mCycle = milliseconds;}public int getCycle() {return mCycle;}public void setEventCycle(int milliseconds) {mEventCycle = milliseconds;}public int getEventCycle() {return mEventCycle;}public void setAccuracy(float x, float y, float z) {mAccuracyX = x;mAccuracyY = y;mAccuracyZ = z;}public float getAccuracyX() {return mAccuracyX;}public float getAccuracyY() {return mAccuracyY;}public float getAccuracyZ() {return mAccuracyZ;}public boolean isReady() {return (mSensor == null) ? false : true;}public void start() {if (isReady()) {mSensorManager.registerListener(mSensorListener, mSensor, mRate);} else {mBrowser.exception(getInterfaceName(), "Accelerometer is not found.");}}public void stop() {if (isReady()) {mSensorManager.unregisterListener(mSensorListener);}}}

RexseeSensorOrientation 方向传感器

package rexsee.sensor;import rexsee.core.browser.Browser;import rexsee.core.browser.clazz.JavascriptInterface;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;public class RexseeSensorOrientation implements JavascriptInterface {public static final String INTERFACE_NAME = "Orientation";@Overridepublic String getInterfaceName() {return mBrowser.application.resources.prefix + INTERFACE_NAME;}@Overridepublic JavascriptInterface getInheritInterface(Browser childBrowser) {return this;}@Overridepublic JavascriptInterface getNewInterface(Browser childBrowser) {return new RexseeSensorOrientation(childBrowser);}public static final String EVENT_ONORIENTATIONCHANGED = "onOrientationChanged";private final Context mContext;private final Browser mBrowser;private final SensorManager mSensorManager;private SensorEventListener mSensorListener;private final Sensor mSensor;private int mRate = SensorManager.SENSOR_DELAY_NORMAL;private int mCycle = 100; //millisecondsprivate int mEventCycle = 100; //millisecondsprivate float mAccuracyX = 0;private float mAccuracyY = 0;private float mAccuracyZ = 0;private long lastUpdate = -1;private long lastEvent = -1;private float x = -999f;private float y = -999f;private float z = -999f;public RexseeSensorOrientation(Browser browser) {mContext = browser.getContext();mBrowser = browser;browser.eventList.add(EVENT_ONORIENTATIONCHANGED);mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);mSensorListener = new SensorEventListener() {@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor.getType() != Sensor.TYPE_ORIENTATION) return;long curTime = System.currentTimeMillis();if (lastUpdate == -1 || (curTime - lastUpdate) > mCycle) {lastUpdate = curTime;float lastX = x;float lastY = y;float lastZ = z;x = event.values[SensorManager.DATA_X];y = event.values[SensorManager.DATA_Y];z = event.values[SensorManager.DATA_Z];if (lastEvent == -1 || (curTime - lastEvent) > mEventCycle) {if ((mAccuracyX >= 0 && Math.abs(x - lastX) > mAccuracyX)|| (mAccuracyY >= 0 && Math.abs(y - lastY) > mAccuracyY)|| (mAccuracyZ >= 0 && Math.abs(z - lastZ) > mAccuracyZ)) {lastEvent = curTime;mBrowser.eventList.run(EVENT_ONORIENTATIONCHANGED);}}}}};}public String getLastKnownX() {return (x == -999) ? "null" : String.valueOf(x);}public String getLastKnownY() {return (y == -999) ? "null" : String.valueOf(y);}public String getLastKnownZ() {return (z == -999) ? "null" : String.valueOf(z);}public void setRate(String rate) {mRate = SensorRate.getInt(rate);}public String getRate() {return SensorRate.getString(mRate);}public void setCycle(int milliseconds) {mCycle = milliseconds;}public int getCycle() {return mCycle;}public void setEventCycle(int milliseconds) {mEventCycle = milliseconds;}public int getEventCycle() {return mEventCycle;}public void setAccuracy(float x, float y, float z) {mAccuracyX = x;mAccuracyY = y;mAccuracyZ = z;}public float getAccuracyX() {return mAccuracyX;}public float getAccuracyY() {return mAccuracyY;}public float getAccuracyZ() {return mAccuracyZ;}public boolean isReady() {return (mSensor == null) ? false : true;}public void start() {if (isReady()) {mSensorManager.registerListener(mSensorListener, mSensor, mRate);} else {mBrowser.exception(getInterfaceName(), "Orientation sensor is not found.");}}public void stop() {if (isReady()) {mSensorManager.unregisterListener(mSensorListener);}}}

RexseeSensorProximity 距离传感器

package rexsee.sensor;import rexsee.core.browser.Browser;import rexsee.core.browser.clazz.JavascriptInterface;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;public class RexseeSensorProximity implements JavascriptInterface {public static final String INTERFACE_NAME = "Proximity";@Overridepublic String getInterfaceName() {return mBrowser.application.resources.prefix + INTERFACE_NAME;}@Overridepublic JavascriptInterface getInheritInterface(Browser childBrowser) {return this;}@Overridepublic JavascriptInterface getNewInterface(Browser childBrowser) {return new RexseeSensorProximity(childBrowser);}public static final String EVENT_ONPROXIMITYCHANGED = "onProximityChanged";private final Context mContext;private final Browser mBrowser;private final SensorManager mSensorManager;private final SensorEventListener mSensorListener;private final Sensor mSensor;private int mRate = SensorManager.SENSOR_DELAY_NORMAL;private int mCycle = 100; //millisecondsprivate int mEventCycle = 100; //millisecondsprivate float mAccuracy = 0;private long lastUpdate = -1;private long lastEvent = -1;private float value = -999f;public RexseeSensorProximity(Browser browser) {mContext = browser.getContext();mBrowser = browser;browser.eventList.add(EVENT_ONPROXIMITYCHANGED);mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);mSensorListener = new SensorEventListener() {@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor.getType() != Sensor.TYPE_PROXIMITY) return;long curTime = System.currentTimeMillis();if (lastUpdate == -1 || (curTime - lastUpdate) > mCycle) {lastUpdate = curTime;float lastValue = value;value = event.values[SensorManager.DATA_X];if (lastEvent == -1 || (curTime - lastEvent) > mEventCycle) {if (Math.abs(value - lastValue) > mAccuracy) {lastEvent = curTime;mBrowser.eventList.run(EVENT_ONPROXIMITYCHANGED);}}}}};}public String getLastKnownValue() {return (value == -999) ? "null" : String.valueOf(value);}public void setRate(String rate) {mRate = SensorRate.getInt(rate);}public String getRate() {return SensorRate.getString(mRate);}public void setCycle(int milliseconds) {mCycle = milliseconds;}public int getCycle() {return mCycle;}public void setEventCycle(int milliseconds) {mEventCycle = milliseconds;}public int getEventCycle() {return mEventCycle;}public void setAccuracy(float value) {mAccuracy = Math.abs(value);}public float getAccuracy() {return mAccuracy;}public boolean isReady() {return (mSensor == null) ? false : true;}public void start() {if (isReady()) {mSensorManager.registerListener(mSensorListener, mSensor, mRate);} else {mBrowser.exception(getInterfaceName(), "Proximity sensor is not found.");}}public void stop() {if (isReady()) {mSensorManager.unregisterListener(mSensorListener);}}}

RexseeSensorTemperature 温度传感器

package rexsee.sensor;import rexsee.core.browser.Browser;import rexsee.core.browser.clazz.JavascriptInterface;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;public class RexseeSensorTemperature implements JavascriptInterface {public static final String INTERFACE_NAME = "Temperature";@Overridepublic String getInterfaceName() {return mBrowser.application.resources.prefix + INTERFACE_NAME;}@Overridepublic JavascriptInterface getInheritInterface(Browser childBrowser) {return this;}@Overridepublic JavascriptInterface getNewInterface(Browser childBrowser) {return new RexseeSensorTemperature(childBrowser);}public static final String EVENT_ONTEMPERATURECHANGED = "onTemperatureChanged";private final Context mContext;private final Browser mBrowser;private final SensorManager mSensorManager;private final SensorEventListener mSensorListener;private final Sensor mSensor;private int mRate = SensorManager.SENSOR_DELAY_NORMAL;private int mCycle = 100; //millisecondsprivate int mEventCycle = 100; //millisecondsprivate float mAccuracy = 0;private long lastUpdate = -1;private long lastEvent = -1;private float value = -999f;public RexseeSensorTemperature(Browser browser) {mContext = browser.getContext();mBrowser = browser;browser.eventList.add(EVENT_ONTEMPERATURECHANGED);mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE);mSensorListener = new SensorEventListener() {@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor.getType() != Sensor.TYPE_TEMPERATURE) return;long curTime = System.currentTimeMillis();if (lastUpdate == -1 || (curTime - lastUpdate) > mCycle) {lastUpdate = curTime;float lastValue = value;value = event.values[SensorManager.DATA_X];if (lastEvent == -1 || (curTime - lastEvent) > mEventCycle) {if (Math.abs(value - lastValue) > mAccuracy) {lastEvent = curTime;mBrowser.eventList.run(EVENT_ONTEMPERATURECHANGED);}}}}};}public String getLastKnownValue() {return (value == -999) ? "null" : String.valueOf(value);}public void setRate(String rate) {mRate = SensorRate.getInt(rate);}public String getRate() {return SensorRate.getString(mRate);}public void setCycle(int milliseconds) {mCycle = milliseconds;}public int getCycle() {return mCycle;}public void setEventCycle(int milliseconds) {mEventCycle = milliseconds;}public int getEventCycle() {return mEventCycle;}public void setAccuracy(float value) {mAccuracy = Math.abs(value);}public float getAccuracy() {return mAccuracy;}public boolean isReady() {return (mSensor == null) ? false : true;}public void start() {if (isReady()) {mSensorManager.registerListener(mSensorListener, mSensor, mRate);} else {mBrowser.exception(getInterfaceName(), "Temperature sensor is not found.");}}public void stop() {if (isReady()) {mSensorManager.unregisterListener(mSensorListener);}}}

SensorRate 设置传感器速度 

package rexsee.sensor;import android.hardware.SensorManager;public class SensorRate {public static final String RATE_NORMAL = "normal";public static final String RATE_FASTEST = "fastest";public static final String RATE_GAME = "game";public static final String RATE_UI = "ui";public static int getInt(String rate) {rate = rate.toLowerCase();if (rate.equals(RATE_FASTEST)) return SensorManager.SENSOR_DELAY_FASTEST;else if (rate.equals(RATE_GAME)) return SensorManager.SENSOR_DELAY_GAME;else if (rate.equals(RATE_UI)) return SensorManager.SENSOR_DELAY_UI;else return SensorManager.SENSOR_DELAY_NORMAL;}public static String getString(int rate) {switch (rate) {case SensorManager.SENSOR_DELAY_FASTEST :return RATE_FASTEST;case SensorManager.SENSOR_DELAY_GAME :return RATE_GAME;case SensorManager.SENSOR_DELAY_UI :return RATE_UI;default :return RATE_NORMAL;}}}


1 0