[size=1em]1 [size=1em]2 [size=1em]3 [size=1em]4 [size=1em]5 [size=1em]6 [size=1em]7 [size=1em]8 [size=1em]9 [size=1em]10 [size=1em]11 [size=1em]12 [size=1em]13 [size=1em]14 [size=1em]15 [size=1em]16 [size=1em]17 [size=1em]18 [size=1em]19 [size=1em]20 [size=1em]21 [size=1em]22 [size=1em]23 [size=1em]24 [size=1em]25 [size=1em]26 [size=1em]27 [size=1em]28 [size=1em]29 [size=1em]30 [size=1em]31 [size=1em]32 [size=1em]33 [size=1em]34 [size=1em]35 [size=1em]36 [size=1em]37 [size=1em]38 [size=1em]39 [size=1em]40 [size=1em]41 [size=1em]42 [size=1em]43 [size=1em]44 [size=1em]45 [size=1em]46 [size=1em]47 [size=1em]48 [size=1em]49 [size=1em]50 [size=1em]51 [size=1em]52 [size=1em]53 [size=1em]54 [size=1em]55 [size=1em]56 [size=1em]57 [size=1em]58 [size=1em]59 [size=1em]60 [size=1em]61 [size=1em]62 [size=1em]63 [size=1em]64 [size=1em]65 [size=1em]66 [size=1em]67 [size=1em]68 [size=1em]69 [size=1em]70 [size=1em]71 [size=1em]72 [size=1em]73 [size=1em]74 [size=1em]75 [size=1em]76 [size=1em]77 [size=1em]78 [size=1em]79 [size=1em]80 [size=1em]81 [size=1em]82 [size=1em]83 [size=1em]84 [size=1em]85 [size=1em]86 [size=1em]87 [size=1em]88 [size=1em]89 [size=1em]90 [size=1em]91 [size=1em]92 [size=1em]93 [size=1em]94 [size=1em]95 [size=1em]96 [size=1em]97 [size=1em]98 [size=1em]99 [size=1em]100 [size=1em]101 [size=1em]102 [size=1em]103 [size=1em]104 [size=1em]105 [size=1em]106 [size=1em]107 [size=1em]108 [size=1em]109 [size=1em]110 [size=1em]111 [size=1em]112 [size=1em]113 [size=1em]114 [size=1em]115 [size=1em]116 [size=1em]117 [size=1em]118 [size=1em]119 [size=1em]120 [size=1em]121 [size=1em]122 [size=1em]123 [size=1em]124 [size=1em]125 [size=1em]126 [size=1em]127 [size=1em]128 [size=1em]129 [size=1em]130 [size=1em]131 [size=1em]132 [size=1em]133 [size=1em]134 [size=1em]135 [size=1em]136 [size=1em]137 [size=1em]138 [size=1em]139 | [size=1em][size=1em]/* [size=1em]* Copyright (C) 2011 The Rexsee Open Source Project [size=1em]* [size=1em]* Licensed under the Rexsee License, Version 1.0 (the "License"); [size=1em]* you may not use this file except in compliance with the License. [size=1em]* You may obtain a copy of the License at [size=1em]* [size=1em]* http://www.rexsee.com/CN/legal/license.html [size=1em]* [size=1em]* Unless required by applicable law or agreed to in writing, software [size=1em]* distributed under the License is distributed on an "AS IS" BASIS, [size=1em]* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. [size=1em]* See the License for the specific language governing permissions and [size=1em]* limitations under the License. [size=1em]*/ [size=1em] [size=1em]package rexsee.sensor; [size=1em] [size=1em]import rexsee.core.browser.JavascriptInterface; [size=1em]import rexsee.core.browser.RexseeBrowser; [size=1em]import android.content.Context; [size=1em]import android.hardware.Sensor; [size=1em]import android.hardware.SensorEvent; [size=1em]import android.hardware.SensorEventListener; [size=1em]import android.hardware.SensorManager; [size=1em] [size=1em]public class RexseeSensorTemperature implements JavascriptInterface { [size=1em] [size=1em] private static final String INTERFACE_NAME = "Temperature"; [size=1em] @Override [size=1em] public String getInterfaceName() { [size=1em] return mBrowser.application.resources.prefix + INTERFACE_NAME; [size=1em] } [size=1em] @Override [size=1em] public JavascriptInterface getInheritInterface(RexseeBrowser childBrowser) { [size=1em] return this; [size=1em] } [size=1em] @Override [size=1em] public JavascriptInterface getNewInterface(RexseeBrowser childBrowser) { [size=1em] return new RexseeSensorTemperature(childBrowser); [size=1em] } [size=1em] [size=1em] public static final String EVENT_ONTEMPERATURECHANGED = "onTemperatureChanged"; [size=1em] [size=1em] private final Context mContext; [size=1em] private final RexseeBrowser mBrowser; [size=1em] private final SensorManager mSensorManager; [size=1em] private final SensorEventListener mSensorListener; [size=1em] private final Sensor mSensor; [size=1em] [size=1em] private int mRate = SensorManager.SENSOR_DELAY_NORMAL; [size=1em] private int mCycle = 100; //milliseconds [size=1em] private int mEventCycle = 100; //milliseconds [size=1em] private float mAccuracy = 0; [size=1em] [size=1em] private long lastUpdate = -1; [size=1em] private long lastEvent = -1; [size=1em] [size=1em] private float value = -999f; [size=1em] [size=1em] public RexseeSensorTemperature(RexseeBrowser browser) { [size=1em] mContext = browser.getContext(); [size=1em] mBrowser = browser; [size=1em] browser.eventList.add(EVENT_ONTEMPERATURECHANGED); [size=1em] [size=1em] mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE); [size=1em] [size=1em] mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE); [size=1em] [size=1em] mSensorListener = new SensorEventListener() { [size=1em] @Override [size=1em] public void onAccuracyChanged(Sensor sensor, int accuracy) { [size=1em] } [size=1em] @Override [size=1em] public void onSensorChanged(SensorEvent event) { [size=1em] if (event.sensor.getType() != Sensor.TYPE_TEMPERATURE) return; [size=1em] long curTime = System.currentTimeMillis(); [size=1em] if (lastUpdate == -1 || (curTime - lastUpdate) > mCycle) { [size=1em] lastUpdate = curTime; [size=1em] float lastValue = value; [size=1em] value = event.values[SensorManager.DATA_X]; [size=1em] if (lastEvent == -1 || (curTime - lastEvent) > mEventCycle) { [size=1em] if (Math.abs(value - lastValue) > mAccuracy) { [size=1em] lastEvent = curTime; [size=1em] mBrowser.eventList.run(EVENT_ONTEMPERATURECHANGED); [size=1em] } [size=1em] } [size=1em] } [size=1em] } [size=1em] }; [size=1em] [size=1em] } [size=1em] [size=1em] public String getLastKnownValue() { [size=1em] return (value == -999) ? "null" : String.valueOf(value); [size=1em] } [size=1em] [size=1em] public void setRate(String rate) { [size=1em] mRate = SensorRate.getInt(rate); [size=1em] } [size=1em] public String getRate() { [size=1em] return SensorRate.getString(mRate); [size=1em] } [size=1em] public void setCycle(int milliseconds) { [size=1em] mCycle = milliseconds; [size=1em] } [size=1em] public int getCycle() { [size=1em] return mCycle; [size=1em] } [size=1em] public void setEventCycle(int milliseconds) { [size=1em] mEventCycle = milliseconds; [size=1em] } [size=1em] public int getEventCycle() { [size=1em] return mEventCycle; [size=1em] } [size=1em] public void setAccuracy(float value) { [size=1em] mAccuracy = Math.abs(value); [size=1em] } [size=1em] public float getAccuracy() { [size=1em] return mAccuracy; [size=1em] } [size=1em] [size=1em] public boolean isReady() { [size=1em] return (mSensor == null) ? false : true; [size=1em] } [size=1em] public void start() { [size=1em] if (isReady()) { [size=1em] mSensorManager.registerListener(mSensorListener, mSensor, mRate); [size=1em] } else { [size=1em] mBrowser.exception(getInterfaceName(), "Temperature sensor is not found."); [size=1em] } [size=1em] } [size=1em] public void stop() { [size=1em] if (isReady()) { [size=1em] mSensorManager.unregisterListener(mSensorListener); [size=1em] } [size=1em] } [size=1em] [size=1em]} |
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) | Powered by Discuz! X3.4 |