查看: 1467|回复: 0
打印 上一主题 下一主题

Android传感器API之:温度传感器SensorTemperature功能源码

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-12 15:36:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. [代码]RexseeSensorTemperature.java     [url=]跳至[/url] [1] [全屏预览][size=1em][backcolor=rgb(108, 226, 108) !important]
[color=white !important][size=1em]?

[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]}




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表