/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware; import android.annotation.IntDef; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * This class represents a {@link android.hardware.Sensor Sensor} additional information frame, * which is reported through listener callback {@link * android.hardware.SensorEventCallback#onSensorAdditionalInfo onSensorAdditionalInfo}. * * @see SensorManager * @see SensorEventCallback * @see Sensor * */ public class SensorAdditionalInfo { /** * The sensor that generated this event. See * {@link android.hardware.SensorManager SensorManager} for details. */ public final Sensor sensor; /** * Type of this additional info frame. */ public final int type; /** * Sequence number of frame for a certain type. */ public final int serial; /** * Additional info payload data represented in float values. Depending on the type of * information, this may be null. */ public final float[] floatValues; /** * Additional info payload data represented in int values. Depending on the type of information, * this may be null. */ public final int[] intValues; /** * Typical values of additional infomation type. The set of values is subject to extension in * newer versions and vendors have the freedom of define their own custom values. * * @hide */ @IntDef({TYPE_FRAME_BEGIN, TYPE_FRAME_END, TYPE_UNTRACKED_DELAY, TYPE_INTERNAL_TEMPERATURE, TYPE_VEC3_CALIBRATION, TYPE_SENSOR_PLACEMENT, TYPE_SAMPLING}) @Retention(RetentionPolicy.SOURCE) public @interface AdditionalInfoType {} /** * Mark the beginning of a set of additional info frames. */ public static final int TYPE_FRAME_BEGIN = 0; /** * Mark the end of a set of additional info frames. */ public static final int TYPE_FRAME_END = 1; /** * Untracked delay. Delays that are introduced by data processing, such as filtering, which is * not taken into account by sensor timestamps. * * Payload: * floatValues[0]: delay estimation in seconds * floatValues[1]: delay estimation standard deviation */ public static final int TYPE_UNTRACKED_DELAY = 0x10000; /** * Internal temperature. Sensor hardware device internal temperature. * * Payload: * floatValues[0]: internal temperature in Celsius. */ public static final int TYPE_INTERNAL_TEMPERATURE = 0x10001; /** * Vector calibration parameter. Calibration applied to a sensor with 3 elements vector output, * such as accelerometer, gyro, etc. * * Payload: * floatValues[0..11]: First 3 rows of a homogeneous matrix in row major order that captures * any linear transformation, including rotation, scaling, shear, shift. */ public static final int TYPE_VEC3_CALIBRATION = 0x10002; /** * Sensor placement. Describes location and installation angle of the sensor device. * * Payload: * floatValues[0..11]: First 3 rows of homogeneous matrix in row major order that describes * the location and orientation of the sensor. Origin of reference will be the mobile device * geometric sensor. Reference frame is defined as the same as Android sensor frame. */ public static final int TYPE_SENSOR_PLACEMENT = 0x10003; /** * Sampling parameter. Describes the raw sample period and estimated jitter of sample time in * terms of standard deviation. * * Payload: * floatValues[0]: raw sample period in seconds. * floatValues[1]: standard deviation of sampling period. */ public static final int TYPE_SAMPLING = 0x10004; SensorAdditionalInfo( Sensor aSensor, int aType, int aSerial, int [] aIntValues, float [] aFloatValues) { sensor = aSensor; type = aType; serial = aSerial; intValues = aIntValues; floatValues = aFloatValues; } }