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