Full resolution of Android sensor development

Source: Internet
Author: User
<span id="Label3"></p><p><p>Reprint Please specify source: http://blog.csdn.net/smartbetter/article/details/53161452</p></p><p><p>hello, because there will be a recent development of intelligent hardware related requirements, so recently these days to share the blog has been roughly linked to smart hardware, like the previous Bluetooth sharing, I believe many readers have already seen, then today I bring you the Android sensor knowledge of the introduction and use of the method, for the use of sensors , different versions of Android phones may have large hardware differences, but original aim, this article will be through a few of the most common sensors, the infiltration of the church how to use these sensors, to lead you to complete this part of the advanced Improvement. Make it easy for every Android developer to use the Sensor.</p></p>Three types of 1.Android sensors<p><p>Android sensors are broadly divided into such three sensors: motion (motion) sensors, Environment (environmental) sensors, position (Position) Sensors.</p></p>(1) Motion Sensor<p><p>These sensors measure acceleration and angle of rotation on three axes (x, y, z). Several sensors are included:</p></p><pre><pre><code>加速(accelerometer)传感器、重力(gravity)传感器、陀螺仪(gyroscope)传感器、旋转向量(rotational vector )传感器</code></pre></pre><p><p>Here's a look at the coordinate system of the sensor world:</p></p><p><p></p></p><p><p>is not already feeling a little bit.</p></p>(2) Environmental Sensors<p><p>These sensors can measure parameters in different environments, such as ambient air temperature and pressure, light intensity and Humidity. Several sensors are included:</p></p><pre><pre><code>湿度(barometer)传感器、光线(photometer)传感器、温度(thermometer)传感器</code></pre></pre>(3) Position Sensor<p><p>This type of sensor can measure the physical location of the Device. Several sensors are included:</p></p><pre><pre><code>方向(orientation)传感器、磁力(magnetometer)传感器</code></pre></pre><p><p>Now that we're done with the sensor programming, Let's take a look at the sensor framework Android has for us (the Android sensor framework, or asf).</p></p>2.Android Sensor Frame<p><p>The Android SDK provides us with asf, which can be used to access sensors built into the current Android Device. ASF provides many classes and interfaces that help us accomplish a variety of sensor-related tasks. For example:</p></p><pre><pre><code>1)确定当前Android设备内置了哪些传感器。2)确定某一个传感器的技术指标。3)获取传感器传回来的数据,以及定义传感器回传数据的精度。4)注册和注销传感器事件监听器,这些监听器用于监听传感器的变化,通常从传感器回传的数据需要利用这些监听器完成。</code></pre></pre><p><p>ASF allows us to access a number of sensor types, some of which are hardware-based sensors, and some are software-based Sensors. hardware-based sensors are embedded directly into the Android device in the form of chips that get data directly from the external Environment. software-based sensors are not actual hardware chips, and the data returned by software-based sensors are essentially from hardware-based sensors, but these data are typically processed two of times. So software-based sensors can also be called virtual or synthetic (synthetic) Sensors.</p></p><p><p>Android has abstracted sensors for each device, where the Sensormanger class is used to control the sensor, which is used to describe a specific sensor, and Sensoreventlistener is used to monitor the change in sensor values.</p></p>(1) Sensormanager Class<p><p>The instance used to create the sensor service. This class provides a number of methods for accessing and enumerating sensors, registering and unregistering sensor Listeners. It also provides constants related to sensor accuracy, scanning frequency, and Calibration.</p></p>(2) Sensor class<p><p>The sensor class provides us with some methods for acquiring sensor technical Parameters. such as version, type, manufacturer, etc. For example, the type types for all sensors are as follows:</p></p> <table> <thead> <tr> <th>Serial Number</th> <th>sensor</th> <th>type constants defined in the Sensor class</th> </tr> </thead> <tbody> <tr> <td> 1 </td> <td> acceleration sensor </td> <td> type_accelerometer </td> </tr> <tr> <td> 2 </td> <td> temperature sensor </td> <td> type_ambient_temperature </td> </tr> <tr> <td> 3 </td> <td> Gyro sensor </td> <td> type_gyroscope </td> </tr> <tr> <td> 4 </td> <td> light sensor </td> <td> Type_ Light </td> </tr> <tr> <td> 5 </td> <td> magnetic field sensor </td> <td> Type_magnetic_field </td> </tr> <tr> <td> 6 </td> <td> Pressure sensor </td> <td> type_pressure </td> </tr> <tr> <td> 7 </td> <td> Proximity sensor </td> <td> type_proximity </td> </tr> <tr> <td> 8 </td> <td> humidity sensor </td> <td> type_relative_humidity </td> </tr> <tr> <td> 9 </td> <td> Direction sensor </td> <td> TYP E_orientation </td> </tr> <tr> <td> ten </td> <td> gravity sensor </td> <td> type_gravity </td> </tr> <tr> <td> one </td> td> Linear acceleration Sensor <td> type_linear_acceleration </td> </tr> <tr> <td> a </td> <td> rotate vector sensor </td> <td> Type_rotation_ VECTOR </td> </tr> </tbody> </table><p><p>Note: 1-8 is a hardware sensor, 9 is a software sensor, where the direction sensor data comes from gravity and magnetic field sensors, and 10-12 is a hardware or software Sensor.</p></p>(3) Sensorevent Class<p><p>The system uses this class to create a sensor event Object. The object can provide information about the sensor Event. The Sensor event object includes information such as the original sensor backhaul data, the sensor type, the accuracy of the data, and the time the event was Triggered.</p></p>(4) Sensoreventlistener Interface<p><p>The interface contains two callback methods that are called when the callback value or precision of the sensor changes.</p></p><pre class="prettyprint"><pre class="prettyprint"><code class=" hljs java"><span class="hljs-javadoc">/** * 传感器精度变化时回调 */</span><span class="hljs-annotation">@Override</span><span class="hljs-keyword">public</span><span class="hljs-keyword">void</span><span class="hljs-title">onAccuracyChanged</span><span class="hljs-keyword">int</span> accuracy) {}<span class="hljs-javadoc">/** * 传感器数据变化时回调 */</span><span class="hljs-annotation">@Override</span><span class="hljs-keyword">public</span><span class="hljs-keyword">void</span><span class="hljs-title">onSensorChanged</span>(SensorEvent event) {}</code></pre></pre><p><p>When we get here, we can do the sensor development Work.</p></p>3. Get SENSOR Technical data<p><p>Down we write code to get the sensor technical parameters of our own phone.</p></p><pre class="prettyprint"><pre class="prettyprint"><code class="language-java hljs ">TextView tvSensors = (TextView) findViewById(R.id.tv_sensors);<span class="hljs-comment">//获取传感器SensorManager对象</span>SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);<span class="hljs-keyword">for</span> (Sensor sensor : sensors) { <span class="hljs-string">"\n"</span>);}</code></pre></pre><p><p>Run it first to see the effect:</p></p><p><p></p></p><p><p>Looks like my cell phone sensor still a lot of, Haha. Note that this must be done with a physical machine test oh.</p></p><p><p>Let's take a look at the composition and use of motion sensors, environmental sensors, and position sensors respectively.</p></p>4. The composition of the motion sensor and how to use it<p><p>All motion sensors return a value of three floating-point numbers (returned by an array of length 3), but for different sensors, these three are only different in meaning. For example, for an acceleration sensor, three axes of data are Returned. For a gyroscope sensor, the rotational angular velocity of three axes is Returned.</p></p><p><p>Note: The motion sensor itself is not normally used to monitor the location of the device, and the location of the device needs to be monitored with other types of sensors, such as magnetic field sensors.</p></p>(1) Acceleration Sensor<p><p>Acceleration sensors need to be used in conjunction with gravity sensors to reduce the impact of acceleration on Gravity. First you need to implement the Sensoreventlistener interface, add a callback method, then get the sensor Sensormanager object, Register the sensor, then we can monitor the sensor changes. The sample code is as Follows:</p></p><pre class="prettyprint"><code class="language-java hljs "><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">class</span> <span class="hljs-title">sensoractivity</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">appcompatactivity</span> <span class="hljs-keyword"></span> implements <span class="hljs-title"> Sensoreventlistener</span> {</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Private</span></span>TextView tvaccelerometer;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span>Sensormanager msensormanager;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>[] Gravity =<span class="hljs-keyword"><span class="hljs-keyword">New</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>[<span class="hljs-number"><span class="hljs-number">3</span></span>];<span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword">protected</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">onCreate</span></span>(Bundle Savedinstancestate) {<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>. onCreate (savedinstancestate); Setcontentview (r.layout.activity_sensor); Tvaccelerometer = (TextView) Findviewbyid (r.id.tv_accelerometer);<span class="hljs-comment"><span class="hljs-comment">//get sensor Sensormanager Object</span></span>Msensormanager = (sensormanager) Getsystemservice (sensor_service); }<span class="hljs-javadoc"><span class="hljs-javadoc">/** * Callback when sensor accuracy changes *</span> /</span> <span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">onaccuracychanged</span></span>(sensor sensor,<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>Accuracy) {}<span class="hljs-javadoc"><span class="hljs-javadoc">/** * Callback when sensor data changes *</span> /</span> <span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">onsensorchanged</span></span>(sensorevent Event) {<span class="hljs-comment"><span class="hljs-comment">//judging Sensor Categories</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Switch</span></span>(event.sensor.getType ()) {<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>Sensor.type_accelerometer:<span class="hljs-comment"><span class="hljs-comment">//acceleration sensor</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Final</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>Alpha = (<span class="hljs-keyword"><span class="hljs-keyword">float</span></span>)<span class="hljs-number"><span class="hljs-number">0.8</span></span>; gravity[<span class="hljs-number"><span class="hljs-number">0</span></span>] = Alpha * gravity[<span class="hljs-number"><span class="hljs-number">0</span></span>] + (<span class="hljs-number"><span class="hljs-number">1</span></span>-alpha) * event.values[<span class="hljs-number"><span class="hljs-number">0</span></span>]; gravity[<span class="hljs-number"><span class="hljs-number">1</span></span>] = Alpha * gravity[<span class="hljs-number"><span class="hljs-number">1</span></span>] + (<span class="hljs-number"><span class="hljs-number">1</span></span>-alpha) * event.values[<span class="hljs-number"><span class="hljs-number">1</span></span>]; gravity[<span class="hljs-number"><span class="hljs-number">2</span></span>] = Alpha * gravity[<span class="hljs-number"><span class="hljs-number">2</span></span>] + (<span class="hljs-number"><span class="hljs-number">1</span></span>-alpha) * event.values[<span class="hljs-number"><span class="hljs-number">2</span></span>]; String Accelerometer =<span class="hljs-string"><span class="hljs-string">"acceleration sensor \ n"</span></span>+<span class="hljs-string"><span class="hljs-string">"x:"</span></span>+ (event.values[<span class="hljs-number"><span class="hljs-number">0</span></span>]-gravity[<span class="hljs-number"><span class="hljs-number">0</span></span>]) +<span class="hljs-string"><span class="hljs-string">"\ n"</span></span>+<span class="hljs-string"><span class="hljs-string">"y:"</span></span>+ (event.values[<span class="hljs-number"><span class="hljs-number">1</span></span>]-gravity[<span class="hljs-number"><span class="hljs-number">1</span></span>]) +<span class="hljs-string"><span class="hljs-string">"\ n"</span></span>+<span class="hljs-string"><span class="hljs-string">"z:"</span></span>+ (event.values[<span class="hljs-number"><span class="hljs-number">2</span></span>]-gravity[<span class="hljs-number"><span class="hljs-number">2</span></span>]); Tvaccelerometer.settext (accelerometer);<span class="hljs-comment"><span class="hljs-comment">//gravity 9.81m/s^2, The acceleration of the free fall, only under the condition of gravitational force</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>Sensor.type_gravity:<span class="hljs-comment"><span class="hljs-comment">//gravity sensor</span></span>gravity[<span class="hljs-number"><span class="hljs-number">0</span></span>] = event.values[<span class="hljs-number"><span class="hljs-number">0</span></span>];<span class="hljs-comment"><span class="hljs-comment">//unit m/s^2</span></span>gravity[<span class="hljs-number"><span class="hljs-number">1</span></span>] = event.values[<span class="hljs-number"><span class="hljs-number">1</span></span>]; gravity[<span class="hljs-number"><span class="hljs-number">2</span></span>] = event.values[<span class="hljs-number"><span class="hljs-number">2</span></span>];<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword">default</span></span>:<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>; } }<span class="hljs-javadoc"><span class="hljs-javadoc">/** * Interface to get focus, button can be recalled when clicked *</span> /</span> <span class="hljs-keyword"><span class="hljs-keyword">protected</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">Onresume</span></span>() {<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>. Onresume ();<span class="hljs-comment"><span class="hljs-comment">//register Acceleration Sensor</span></span>Msensormanager.registerlistener (<span class="hljs-keyword"><span class="hljs-keyword"></span> this</span>, Msensormanager.getdefaultsensor (sensor.type_accelerometer),<span class="hljs-comment"><span class="hljs-comment">//sensor</span> type</span>sensormanager.sensor_delay_ui);<span class="hljs-comment"><span class="hljs-comment">//acquisition Frequency</span></span> <span class="hljs-comment"><span class="hljs-comment">//register Gravity sensor</span></span>Msensormanager.registerlistener (<span class="hljs-keyword"><span class="hljs-keyword"></span> this</span>, Msensormanager.getdefaultsensor (sensor.type_gravity), sensormanager.sensor_delay_fastest); }<span class="hljs-javadoc"><span class="hljs-javadoc">/** * Pause activity, interface gets focus, button can be recalled when clicked</span> */</span> <span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword">protected</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">OnPause</span></span>() {<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>. OnPause (); Msensormanager.unregisterlistener (<span class="hljs-keyword"><span class="hljs-keyword"></span> this</span>); }}</code></pre><p><p>Take a look:</p></p><p><p></p></p><p><p>We can see positive and negative values, so what is positive? What is negative?</p></p><pre><pre><code>设备从左到右推动,x轴加速度为正值。设备朝着自己推动,y轴加速度为正值。如果由底部朝着顶部以a m/s^2的加速度推动,那么Z轴的加速度为a + 9.81,所以如果计算实际的加速度(抵消重力加速度),需要减9.81。</code></pre></pre>5. The position Sensor's composition and the use method<p><p>Android provides a magnetic field sensor and orientation sensor to determine the location of the device, as well as a sensor (proximity sensor) that measures the distance from the front of the device to a nearby Object.</p></p><p><p>Proximity sensors are common in mobile phones. When you answer a phone, the screen is used as a proximity sensor. The direction sensor is software-based and the Sensor's return data comes from an accelerometer and a magnetic field sensor.</p></p><p><p>Position sensors are useful for determining the physical location of a device in the real world. For example, you can combine a magnetic field sensor and an accelerometer to measure the position of a device relative to the geomagnetic North pole, and you can use a direction sensor to determine the position of the current device relative to its own reference Frame.</p></p><p><p>Both the magnetic field sensor and the direction sensor return a value of 3 values (sensorevent.values), while the proximity sensor returns only 1 Values.</p></p><p><p>Let's look at their return values in Detail:</p></p><p><p>Direction sensor:</p></p><pre><pre><code>SensorEvent.values[0]:绕着Z轴旋转的角度。如果Y轴(正常拿手机的方向)正对着北方,该值是0,如果Y轴指向南方,改值是180,Y轴指向东方,该值是90,如果Y轴指向西方,该值是270。SensorEvent.values[1]:绕着X轴旋转的度数。当从Z轴正方向朝向Y轴正方向,改值为正值。反之,为负值。该值在180至-180之间变动。SensorEvent.values[2]:绕着Y轴旋转的度数。当从Z轴正方向朝向X轴正方向,改值为正值。反之,为负值。该值在180至-180之间变动。</code></pre></pre><p><p>magnetic field Sensors:</p></p><pre><pre><code>SensorEvent.values[0]:沿着X轴的磁力(μT,millitesla)SensorEvent.values[1]:沿着Y轴的磁力(μT,millitesla)SensorEvent.values[2]:沿着Y轴的磁力(μT,millitesla)</code></pre></pre><p><p>Proximity Sensors:</p></p><pre><pre><code>SensorEvent.values[0]:手机正面距离邻近物理的距离(CM)</code></pre></pre>(1) Proximity Sensor<p><p>Here the proximity sensor is implemented as an example project, and the other sensors are similar.</p></p><pre class="prettyprint"><code class="language-java hljs "><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">class</span> <span class="hljs-title">sensoractivity</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">appcompatactivity</span> <span class="hljs-keyword"></span> implements <span class="hljs-title"> Sensoreventlistener</span> {</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Private</span></span>TextView tvproximity;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span>Sensormanager msensormanager;<span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword">protected</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">onCreate</span></span>(Bundle Savedinstancestate) {<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>. onCreate (savedinstancestate); Setcontentview (r.layout.activity_motion_sensor); tvproximity = (TextView) Findviewbyid (r.id.tv_proximity);<span class="hljs-comment"><span class="hljs-comment">//get sensor Sensormanager Object</span></span>Msensormanager = (sensormanager) Getsystemservice (sensor_service); }<span class="hljs-javadoc"><span class="hljs-javadoc">/** * Callback when sensor accuracy changes *</span> /</span> <span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">onaccuracychanged</span></span>(sensor sensor,<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>Accuracy) {}<span class="hljs-javadoc"><span class="hljs-javadoc">/** * Callback when sensor data changes *</span> /</span> <span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">onsensorchanged</span></span>(sensorevent Event) {<span class="hljs-comment"><span class="hljs-comment">//judging Sensor Categories</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Switch</span></span>(event.sensor.getType ()) {<span class="hljs-keyword"><span class="hljs-keyword"></span> case</span>Sensor.type_proximity:<span class="hljs-comment"><span class="hljs-comment">//proximity sensor</span></span>Tvproximity.settext (string.valueof (event.values[<span class="hljs-number"><span class="hljs-number">0</span></span>]));<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>;<span class="hljs-keyword"><span class="hljs-keyword">default</span></span>:<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>; } }<span class="hljs-javadoc"><span class="hljs-javadoc">/** * Interface to get focus, button can be recalled when clicked *</span> /</span> <span class="hljs-keyword"><span class="hljs-keyword">protected</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">Onresume</span></span>() {<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>. Onresume ();<span class="hljs-comment"><span class="hljs-comment">//register Proximity Sensor</span></span>Msensormanager.registerlistener (<span class="hljs-keyword"><span class="hljs-keyword"></span> this</span>, Msensormanager.getdefaultsensor (sensor.type_proximity), sensormanager.sensor_delay_ui); }<span class="hljs-javadoc"><span class="hljs-javadoc">/** * Pause activity, interface gets focus, button can be recalled when clicked</span> */</span> <span class="hljs-annotation"><span class="hljs-annotation">@Override</span></span> <span class="hljs-keyword"><span class="hljs-keyword">protected</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">OnPause</span></span>() {<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>. OnPause (); Msensormanager.unregisterlistener (<span class="hljs-keyword"><span class="hljs-keyword"></span> this</span>); }}</code></pre><p><p>Running the program, I stop blocking the proximity sensor and look at:</p></p><p><p></p></p><p><p>0.0 is the value when I block the proximity sensor, and 8.0 is the value when I move my hand away.</p></p><p><p>Next we look at a comparison of the sensor, and nature is closely related.</p></p>6. The composition and use of environmental sensors<p><p>Android provides sensors for detecting different external environments. For example, the ambient air humidity, light, pressure and temperature of the air can be detected, and these sensors are hardware-based sensors. In addition to light sensors, other sensors are rare in common Android Devices. So if you use an environment sensor, it is best to run the sensor that is supported by the current Android Device.</p></p>(1) The return value of the environment sensor<p><p>Most motion sensors and position sensors return multiple values, and all environment sensors return only one value:</p></p> <table> <thead> <tr> <th align="center">sensor</th> <th align="center">Type value</th> <th align="center">return value</th> <th>Unit</th> </tr> </thead> <tbody> <tr> <td align="center">Temperature sensor</td> <td align="center">Type_ambient_temperature</td> <td align="center">event.values[0]</td> <td>°c</td> </tr> <tr> <td align="center">Pressure sensor</td> <td align="center">Type_pressure</td> <td align="center">event.values[0]</td> <td>Hpa</td> </tr> <tr> <td align="center">Light sensor</td> <td align="center">Type_light</td> <td align="center">event.values[0]</td> <td>Lx</td> </tr> <tr> <td align="center">Humidity sensor</td> <td align="center">Type_relative_humidity</td> <td align="center">event.values[0]</td> <td>RH (%)</td> </tr> </tbody> </table><p><p>Note: the values returned by the ambient sensor are rarely disturbed by noise, and motion and position sensors often need to eliminate the effects of noise. For example, the acceleration sensor eliminates the effect of gravity on its return value.</p></p>(2) Light sensor backhaul data<pre class="prettyprint"><code class="language-java hljs "><span class="hljs-comment"><span class="hljs-comment">//the Strongest light intensity (estimated only in desert areas to achieve this Value)</span></span><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Final</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>Light_sunlight_max =<span class="hljs-number"><span class="hljs-number">120000.0</span></span>F<span class="hljs-comment"><span class="hljs-comment">//the intensity of direct sunlight when cloudless</span></span><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Final</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>Light_sunlight =<span class="hljs-number"><span class="hljs-number">110000.0</span></span>F<span class="hljs-comment"><span class="hljs-comment">//sunlight, But the intensity of partial light is offset</span> by the cloud</span><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Final</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>Light_shade =<span class="hljs-number"><span class="hljs-number">20000.0</span></span>F<span class="hljs-comment"><span class="hljs-comment">///light intensity on cloudy hours</span></span><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Final</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>Light_overcast =<span class="hljs-number"><span class="hljs-number">10000.0</span></span>F<span class="hljs-comment"><span class="hljs-comment">//the light intensity of the sun (sunrise) when it just rises</span></span><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Final</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>Light_sunrise =<span class="hljs-number"><span class="hljs-number">400.0</span></span>F<span class="hljs-comment"><span class="hljs-comment">//in Rainy days, light intensity without sun</span></span><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Final</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>Light_cloudy =<span class="hljs-number"><span class="hljs-number">100.0</span></span>F<span class="hljs-comment"><span class="hljs-comment">//light intensity at night with moon</span></span><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Final</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>Light_fullmoon =<span class="hljs-number"><span class="hljs-number">0.25</span></span>F<span class="hljs-comment"><span class="hljs-comment">//night without the moon light intensity (of course, can not have a street lamp, is dark Piece)</span></span><span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Final</span></span> <span class="hljs-keyword"><span class="hljs-keyword">float</span></span>Light_no_moon =<span class="hljs-number"><span class="hljs-number">0.001</span></span>F</code></pre><p><p>The use of environmental sensors and action, position sensor is similar, in the time not to Repeat.</p></p><p><p>I believe that through this study, Everyone's development level will have a certain improvement, and everyone's improvement is my most gratifying thing.</p></p> <p><p>Full resolution of Android sensor development</p></p></span>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.