- SensorManager lets you access the device’s {@link android.hardware.Sensor
- sensors}. Get an instance of this class by calling
- {@link android.content.Context#getSystemService(java.lang.String)
- Context.getSystemService()} with the argument
- {@link android.content.Context#SENSOR_SERVICE}.
-
- Always make sure to disable sensors you don’t need, especially when your
- activity is paused. Failing to do so can drain the battery in just a few
- hours. Note that the system will not disable sensors automatically when
- the screen turns off.
-
- Note: Don’t use this mechanism with a Trigger Sensor, have a look
- at {@link TriggerEventListener}. {@link Sensor#TYPE_SIGNIFICANT_MOTION}
- is an example of a trigger sensor.
- public class SensorActivity extends Activity, implements SensorEventListener {
-
private final SensorManager mSensorManager;
-
private final Sensor mAccelerometer;
-
public SensorActivity() {
-
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
-
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
-
}
-
protected void onResume() {
-
super.onResume();
-
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
-
}
-
protected void onPause() {
-
super.onPause();
-
mSensorManager.unregisterListener(this);
-
}
-
public void onAccuracyChanged(Sensor sensor, int accuracy) {
-
}
-
public void onSensorChanged(SensorEvent event) {
-
}
- }
- @see SensorEventListener
- @see SensorEvent
- @see Sensor
*/
public abstract class SensorManager {
…
}
/**
- Sensor manager implementation that communicates with the built-in
- system sensors.
- @hide
*/
public class SystemSensorManager extends SensorManager {
…
}
class ISensorServer : public IInterface
{
public:
DECLARE_META_INTERFACE(SensorServer);
virtual Vector getSensorList(const String16& opPackageName) = 0;
virtual sp createSensorEventConnection(const String8& packageName,
int mode, const String16& opPackageName) = 0;
virtual int32_t isDataInjectionEnabled() = 0;
};
/**
- Every hardware module must have a data structure named HAL_MODULE_INFO_SYM
- and the fields of this data structure must begin with hw_module_t
- followed by module specific information.
*/
struct sensors_module_t {
struct hw_module_t common;
/**
- Enumerate all available sensors. The list is returned in “list”.
- @return number of sensors in the list
/
int (get_sensors_list)(struct sensors_module_t module,
struct sensor_t const* list);
/**
- Place the module in a specific mode. The following modes are defined
- 0 - Normal operation. Default state of the module.
- 1 - Loopback mode. Data is injected for the the supported
-
sensors by the sensor service in this mode.
- @return 0 on success
-
-EINVAL if requested mode is not supported
-
-EPERM if operation is not allowed
*/
int (*set_operation_mode)(unsigned int mode);
};
2,Sensor Server的初始化过程
3,Sensor Client
3.1 初始化过程
3.2 与Server端通信的建立过程
4,应用开发总结
其中SensorEventListener的定义摘录如下,更多应用层开发细节请参考google 官方文档。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**