19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.hardware; 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2074cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian/** 2174cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian * Class representing a sensor. Use {@link SensorManager#getSensorList} to get 2274cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian * the list of available Sensors. 230f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * 240f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * @see SensorManager 250f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * @see SensorEventListener 260f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * @see SensorEvent 270f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Sensor { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3174cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian /** 3274cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian * A constant describing an accelerometer sensor type. See 330f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * {@link android.hardware.SensorEvent#values SensorEvent.values} for more 340f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * details. 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3674cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian public static final int TYPE_ACCELEROMETER = 1; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3874cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian /** 3974cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian * A constant describing a magnetic field sensor type. See 400f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * {@link android.hardware.SensorEvent#values SensorEvent.values} for more 410f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * details. 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int TYPE_MAGNETIC_FIELD = 2; 4474cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 4574cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian /** 4674cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian * A constant describing an orientation sensor type. See 470f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * {@link android.hardware.SensorEvent#values SensorEvent.values} for more 480f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * details. 4974cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian * 5061a449393cf29f3960b4e03ec3fad652dac51b88Mathias Agopian * @deprecated use {@link android.hardware.SensorManager#getOrientation 5174cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian * SensorManager.getOrientation()} instead. 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5361a449393cf29f3960b4e03ec3fad652dac51b88Mathias Agopian @Deprecated 5474cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian public static final int TYPE_ORIENTATION = 3; 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** A constant describing a gyroscope sensor type */ 5774cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian public static final int TYPE_GYROSCOPE = 4; 5874cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 594115c518753052add46b017bb3044da6f6169a7bMike Lockwood /** 6074cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian * A constant describing an light sensor type. See 610f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * {@link android.hardware.SensorEvent#values SensorEvent.values} for more 620f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * details. 634115c518753052add46b017bb3044da6f6169a7bMike Lockwood */ 6474cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian public static final int TYPE_LIGHT = 5; 65210fc914db37b3cf77ebb3bf75b0b509a1ecb07cMathias Agopian 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** A constant describing a pressure sensor type */ 6774cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian public static final int TYPE_PRESSURE = 6; 68210fc914db37b3cf77ebb3bf75b0b509a1ecb07cMathias Agopian 69462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian /** 70462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian * A constant describing a temperature sensor type 71462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian * 72462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian * @deprecated use 73462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian * {@link android.hardware.Sensor#TYPE_AMBIENT_TEMPERATURE 74462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian * Sensor.TYPE_AMBIENT_TEMPERATURE} instead. 75462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian */ 76462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian @Deprecated 7774cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian public static final int TYPE_TEMPERATURE = 7; 78210fc914db37b3cf77ebb3bf75b0b509a1ecb07cMathias Agopian 794115c518753052add46b017bb3044da6f6169a7bMike Lockwood /** 8074cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian * A constant describing an proximity sensor type. See 810f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * {@link android.hardware.SensorEvent#values SensorEvent.values} for more 820f791a799dc81d93935fd2597297cf7ac2c0a044Mathias Agopian * details. 834115c518753052add46b017bb3044da6f6169a7bMike Lockwood */ 8474cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian public static final int TYPE_PROXIMITY = 8; 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8674cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian /** 87f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell * A constant describing a gravity sensor type. 88f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell * See {@link android.hardware.SensorEvent SensorEvent} 89f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell * for more details. 90f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell */ 91f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell public static final int TYPE_GRAVITY = 9; 92f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell 93f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell /** 94f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell * A constant describing a linear acceleration sensor type. 95f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell * See {@link android.hardware.SensorEvent SensorEvent} 96f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell * for more details. 97f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell */ 98f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell public static final int TYPE_LINEAR_ACCELERATION = 10; 99f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell 100f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell /** 101f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell * A constant describing a rotation vector sensor type. 102f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell * See {@link android.hardware.SensorEvent SensorEvent} 103f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell * for more details. 104f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell */ 105f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell public static final int TYPE_ROTATION_VECTOR = 11; 106f35fd959fe499c61ee0d97d5b0c8feb469397a42Kevin Powell 1075819051eee071d622e5cb1f32c74112b1c7b1072Urs Fleisch /** 1085819051eee071d622e5cb1f32c74112b1c7b1072Urs Fleisch * A constant describing a relative humidity sensor type. 1095819051eee071d622e5cb1f32c74112b1c7b1072Urs Fleisch * See {@link android.hardware.SensorEvent SensorEvent} 1105819051eee071d622e5cb1f32c74112b1c7b1072Urs Fleisch * for more details. 1115819051eee071d622e5cb1f32c74112b1c7b1072Urs Fleisch */ 1125819051eee071d622e5cb1f32c74112b1c7b1072Urs Fleisch public static final int TYPE_RELATIVE_HUMIDITY = 12; 1135819051eee071d622e5cb1f32c74112b1c7b1072Urs Fleisch 114462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian /** A constant describing an ambient temperature sensor type */ 115462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian public static final int TYPE_AMBIENT_TEMPERATURE = 13; 116462db220a2986f7d9fc3d7e3e6af6615570eaa0bMathias Agopian 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A constant describing all sensor types. 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12074cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian public static final int TYPE_ALL = -1; 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12274cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian /* Some of these fields are set only by the native bindings in 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SensorManager. 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mName; 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mVendor; 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mVersion; 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mHandle; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mType; 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private float mMaxRange; 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private float mResolution; 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private float mPower; 133050b56244ff46d43e4886018d7cd20f0b1dc02b9Mathias Agopian private int mMinDelay; 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mLegacyType; 13574cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 13674cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Sensor() { 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return name string of the sensor. 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getName() { 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mName; 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return vendor string of this sensor. 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getVendor() { 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mVendor; 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15374cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return generic type of this sensor. 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getType() { 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mType; 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16074cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return version of the sensor's module. 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getVersion() { 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mVersion; 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16774cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return maximum range of the sensor in the sensor's unit. 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getMaximumRange() { 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mMaxRange; 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17474cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return resolution of the sensor in the sensor's unit. 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getResolution() { 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mResolution; 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18174cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the power in mA used by this sensor while in use 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getPower() { 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mPower; 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18874cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 189050b56244ff46d43e4886018d7cd20f0b1dc02b9Mathias Agopian /** 190050b56244ff46d43e4886018d7cd20f0b1dc02b9Mathias Agopian * @return the minimum delay allowed between two events in microsecond 191050b56244ff46d43e4886018d7cd20f0b1dc02b9Mathias Agopian * or zero if this sensor only returns a value when the data it's measuring 192050b56244ff46d43e4886018d7cd20f0b1dc02b9Mathias Agopian * changes. 193050b56244ff46d43e4886018d7cd20f0b1dc02b9Mathias Agopian */ 194050b56244ff46d43e4886018d7cd20f0b1dc02b9Mathias Agopian public int getMinDelay() { 195050b56244ff46d43e4886018d7cd20f0b1dc02b9Mathias Agopian return mMinDelay; 196050b56244ff46d43e4886018d7cd20f0b1dc02b9Mathias Agopian } 197050b56244ff46d43e4886018d7cd20f0b1dc02b9Mathias Agopian 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getHandle() { 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mHandle; 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20174cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setRange(float max, float res) { 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMaxRange = max; 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mResolution = res; 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20674cde2cee9e53006a710f4e80700cd560c2d0e4dMathias Agopian 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setLegacyType(int legacyType) { 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mLegacyType = legacyType; 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getLegacyType() { 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mLegacyType; 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 215