Sensor.java revision 61a449393cf29f3960b4e03ec3fad652dac51b88
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
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Class representing a sensor. Use {@link SensorManager#getSensorList}
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to get the list of available Sensors.
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Sensor {
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A constant describing an accelerometer sensor type.
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * See {@link android.hardware.SensorEvent SensorEvent}
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more details.
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_ACCELEROMETER  = 1;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A constant describing a magnetic field sensor type.
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * See {@link android.hardware.SensorEvent SensorEvent}
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more details.
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_MAGNETIC_FIELD = 2;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A constant describing an orientation sensor type.
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * See {@link android.hardware.SensorEvent SensorEvent}
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for more details.
4461a449393cf29f3960b4e03ec3fad652dac51b88Mathias Agopian     * @deprecated use {@link android.hardware.SensorManager#getOrientation
4561a449393cf29f3960b4e03ec3fad652dac51b88Mathias Agopian     *  SensorManager.getOrientation()} instead.
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4761a449393cf29f3960b4e03ec3fad652dac51b88Mathias Agopian    @Deprecated
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_ORIENTATION    = 3;
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** A constant describing a gyroscope sensor type */
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_GYROSCOPE      = 4;
524115c518753052add46b017bb3044da6f6169a7bMike Lockwood    /**
534115c518753052add46b017bb3044da6f6169a7bMike Lockwood     * A constant describing an light sensor type.
544115c518753052add46b017bb3044da6f6169a7bMike Lockwood     * See {@link android.hardware.SensorEvent SensorEvent}
554115c518753052add46b017bb3044da6f6169a7bMike Lockwood     * for more details.
564115c518753052add46b017bb3044da6f6169a7bMike Lockwood     */
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_LIGHT          = 5;
58210fc914db37b3cf77ebb3bf75b0b509a1ecb07cMathias Agopian
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** A constant describing a pressure sensor type */
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_PRESSURE       = 6;
61210fc914db37b3cf77ebb3bf75b0b509a1ecb07cMathias Agopian
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** A constant describing a temperature sensor type */
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEMPERATURE    = 7;
64210fc914db37b3cf77ebb3bf75b0b509a1ecb07cMathias Agopian
654115c518753052add46b017bb3044da6f6169a7bMike Lockwood    /**
664115c518753052add46b017bb3044da6f6169a7bMike Lockwood     * A constant describing an proximity sensor type.
674115c518753052add46b017bb3044da6f6169a7bMike Lockwood     * See {@link android.hardware.SensorEvent SensorEvent}
684115c518753052add46b017bb3044da6f6169a7bMike Lockwood     * for more details.
694115c518753052add46b017bb3044da6f6169a7bMike Lockwood     */
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_PROXIMITY      = 8;
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A constant describing all sensor types.
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_ALL             = -1;
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /* Some of these fields are set only by the native bindings in
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SensorManager.
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String  mName;
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String  mVendor;
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private int     mVersion;
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private int     mHandle;
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private int     mType;
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float   mMaxRange;
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float   mResolution;
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private float   mPower;
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private int     mLegacyType;
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Sensor() {
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return name string of the sensor.
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getName() {
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mName;
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return vendor string of this sensor.
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getVendor() {
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mVendor;
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return generic type of this sensor.
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getType() {
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mType;
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return version of the sensor's module.
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getVersion() {
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mVersion;
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return maximum range of the sensor in the sensor's unit.
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getMaximumRange() {
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mMaxRange;
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return resolution of the sensor in the sensor's unit.
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getResolution() {
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mResolution;
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the power in mA used by this sensor while in use
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getPower() {
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPower;
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getHandle() {
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mHandle;
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setRange(float max, float res) {
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mMaxRange = max;
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mResolution = res;
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setLegacyType(int legacyType) {
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mLegacyType = legacyType;
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getLegacyType() {
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mLegacyType;
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
161