博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Accelerometer Sensor
阅读量:6083 次
发布时间:2019-06-20

本文共 2440 字,大约阅读时间需要 8 分钟。

package zhangphil.sensor;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;public class MainActivity extends AppCompatActivity {    private SensorManager mSensorManager;    private MySensorEventListener mSensorEventListener;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        startSensor();    }    /**     * 启动传感器,监测设备的运动位移。     */    private void startSensor() {        mSensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);        if (mSensorManager == null) {            throw new UnsupportedOperationException();        }        Sensor mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);        if (mSensor == null) {            throw new UnsupportedOperationException("设备不支持");        }        //加速度传感器        mSensorEventListener = new MySensorEventListener();        boolean isRegister = mSensorManager.registerListener(mSensorEventListener, mSensor, SensorManager.SENSOR_DELAY_NORMAL);        if (!isRegister) {            throw new UnsupportedOperationException("设备不支持");        }    }    private class MySensorEventListener implements SensorEventListener {        private float x_old = 0, y_old = 0, z_old = 0;        private float x_new = 0, y_new = 0, z_new = 0;        private float delta_x = 0, delta_y = 0, delta_z = 0;        private double delta = 0;        @Override        public void onSensorChanged(SensorEvent sensorEvent) {            x_new = sensorEvent.values[0];    //x坐标轴            y_new = sensorEvent.values[1];    //y坐标轴            z_new = sensorEvent.values[2];    //z坐标轴            delta_x = x_new - x_old;            delta_y = y_new - y_old;            delta_z = z_new - z_old;            //此处建立不严格的数学模型,计算运动量,从而得出位移的值。            delta = Math.sqrt(delta_x * delta_x + delta_y * delta_y + delta_z * delta_z);            Log.d("设备运动位移", delta + "");            x_old = x_new;            y_old = y_new;            z_old = z_new;        }        @Override        public void onAccuracyChanged(Sensor sensor, int i) {        }    }    @Override    protected void onDestroy() {        super.onDestroy();        mSensorManager.unregisterListener(mSensorEventListener);    }}

转载地址:http://bkuwa.baihongyu.com/

你可能感兴趣的文章
oracle ORA-01840:输入值对于日期格式不够长
查看>>
python基础知识~logger模块
查看>>
SIP入门(二):建立SIPserver
查看>>
Servlet3.0的异步
查看>>
WebService连接postgresql( 失败尝试)
查看>>
从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?...
查看>>
Python-MacOSX下SIP引起的pip权限问题解决方案(非取消SIP机制)
查看>>
从MFQ方法到需求分析
查看>>
android.view.WindowManager$BadTokenException: Unable to add window
查看>>
HDU5012:Dice(bfs模板)
查看>>
iphone openssh
查看>>
Linux下MEncoder的编译
查看>>
spark高级排序彻底解秘
查看>>
ylbtech-LanguageSamples-PartialTypes(部分类型)
查看>>
福建省促进大数据发展:变分散式管理为统筹集中式管理
查看>>
开发环境、生产环境、测试环境的基本理解和区别
查看>>
tomcat多应用之间如何共享jar
查看>>
Flex前后台交互,service层调用后台服务的简单封装
查看>>
MySQL入门12-数据类型
查看>>
Windows Azure 保留已存在的虚拟网络外网IP(云服务)
查看>>