版权声明: https://blog.csdn.net/qq_31255557/article/details/89819349
1.注册传感器
//传感器管理 SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI);
2.相机类实现SensorEventListener,并重写onSensorChanged()方法
private float mLastX,mLastY,mLastZ; private boolean initFirstSensor = true;
@Override public void onSensorChanged(SensorEvent event) { float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; if (initFirstSensor) {//初始化默认进入时候的坐标 mLastX = x; mLastY = y; mLastZ = z; initFirstSensor = false; return; } float deltaX = Math.abs(mLastX - x); float deltaY = Math.abs(mLastY - y); float deltaZ = Math.abs(mLastZ - z); if (deltaX > 2.5 || deltaY > 2.5 || deltaZ > 2.5) {//计算坐标偏移值 // 获取最清晰拍摄焦距 camera.autoFocus(new Camera.AutoFocusCallback() { @Override public void onAutoFocus(boolean success, Camera camera) { if (success) { //移动手机自动对焦,对焦成功实现自己的逻辑 } } }); } mLastX = x; mLastY = y; mLastZ = z; }