zoukankan      html  css  js  c++  java
  • 现在在北京,住的地方网不太好,来更新个传感器的栗子

    手机所有传感器的都添加到栗子中了

    package com.example.senortest;
    
    import android.app.Activity;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.EditText;
    
    public class MainActivity extends Activity
            implements SensorEventListener
    {
        // 定义Sensor管理器
        private SensorManager mSensorManager;
        EditText etOrientation;
        EditText etGyro;
        EditText etMagnetic;
        EditText etGravity;
        EditText etLinearAcc;
        EditText etTemerature;
        EditText etLight;
        EditText etPressure;
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // 获取界面上的EditText组件
            etOrientation = (EditText) findViewById(R.id.etOrientation);
            etGyro = (EditText) findViewById(R.id.etGyro);
            etMagnetic = (EditText) findViewById(R.id.etMagnetic);
            etGravity = (EditText) findViewById(R.id.etGravity);
            etLinearAcc = (EditText) findViewById(R.id.etLinearAcc);
            etTemerature = (EditText) findViewById(R.id.etTemerature);
            etLight = (EditText) findViewById(R.id.etLight);
            etPressure = (EditText) findViewById(R.id.etPressure);
            // 获取传感器管理服务
            mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);  //
        }
        @Override
        protected void onResume()
        {
            super.onResume();
            // 为系统的方向传感器注册监听器
            mSensorManager.registerListener(this,
                    mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
                    SensorManager.SENSOR_DELAY_GAME);
            // 为系统的陀螺仪传感器注册监听器
            mSensorManager.registerListener(this,
                    mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE),
                    SensorManager.SENSOR_DELAY_GAME);
            // 为系统的磁场传感器注册监听器
            mSensorManager.registerListener(this,
                    mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
                    SensorManager.SENSOR_DELAY_GAME);
            // 为系统的重力传感器注册监听器
            mSensorManager.registerListener(this,
                    mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY),
                    SensorManager.SENSOR_DELAY_GAME);
            // 为系统的线性加速度传感器注册监听器
            mSensorManager.registerListener(this,
                    mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION),
                    SensorManager.SENSOR_DELAY_GAME);
            // 为系统的温度传感器注册监听器
            mSensorManager.registerListener(this,
                    mSensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE),
                    SensorManager.SENSOR_DELAY_GAME);
            // 为系统的光传感器注册监听器
            mSensorManager.registerListener(this,
                    mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
                    SensorManager.SENSOR_DELAY_GAME);
            // 为系统的压力传感器注册监听器
            mSensorManager.registerListener(this,
                    mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE),
                    SensorManager.SENSOR_DELAY_GAME);
        }
        @Override
        protected void onStop()
        {
            // 程序退出时取消注册传感器监听器
            mSensorManager.unregisterListener(this);
            super.onStop();
        }
        @Override
        protected void onPause()
        {
            // 程序暂停时取消注册传感器监听器
            mSensorManager.unregisterListener(this);
            super.onPause();
        }
        // 以下是实现SensorEventListener接口必须实现的方法
        @Override
        // 当传感器精度改变时回调该方法。
        public void onAccuracyChanged(Sensor sensor, int accuracy)
        {
        }
        @Override
        public void onSensorChanged(SensorEvent event)
        {
            float[] values = event.values;
            // 获取触发event的传感器类型
            int sensorType = event.sensor.getType();
            StringBuilder sb = null;
            // 判断是哪个传感器发生改变
            switch (sensorType)
            {
                // 方向传感器
                case Sensor.TYPE_ORIENTATION:
                    sb = new StringBuilder();
                    sb.append("绕Z轴转过的角度:");
                    sb.append(values[0]);
                    sb.append("
    绕X轴转过的角度:");
                    sb.append(values[1]);
                    sb.append("
    绕Y轴转过的角度:");
                    sb.append(values[2]);
                    etOrientation.setText(sb.toString());
                    break;
                // 陀螺仪传感器
                case Sensor.TYPE_GYROSCOPE:
                    sb = new StringBuilder();
                    sb.append("绕X轴旋转的角速度:");
                    sb.append(values[0]);
                    sb.append("
    绕Y轴旋转的角速度:");
                    sb.append(values[1]);
                    sb.append("
    绕Z轴旋转的角速度:");
                    sb.append(values[2]);
                    etGyro.setText(sb.toString());
                    break;
                // 磁场传感器
                case Sensor.TYPE_MAGNETIC_FIELD:
                    sb = new StringBuilder();
                    sb.append("X轴方向上的磁场强度:");
                    sb.append(values[0]);
                    sb.append("
    Y轴方向上的磁场强度:");
                    sb.append(values[1]);
                    sb.append("
    Z轴方向上的磁场强度:");
                    sb.append(values[2]);
                    etMagnetic.setText(sb.toString());
                    break;
                // 重力传感器
                case Sensor.TYPE_GRAVITY:
                    sb = new StringBuilder();
                    sb.append("X轴方向上的重力:");
                    sb.append(values[0]);
                    sb.append("
    Y轴方向上的重力:");
                    sb.append(values[1]);
                    sb.append("
    Z方向上的重力:");
                    sb.append(values[2]);
                    etGravity.setText(sb.toString());
                    break;
                // 线性加速度传感器
                case Sensor.TYPE_LINEAR_ACCELERATION:
                    sb = new StringBuilder();
                    sb.append("X轴方向上的线性加速度:");
                    sb.append(values[0]);
                    sb.append("
    Y轴方向上的线性加速度:");
                    sb.append(values[1]);
                    sb.append("
    Z轴方向上的线性加速度:");
                    sb.append(values[2]);
                    etLinearAcc.setText(sb.toString());
                    break;
                // 温度传感器
                case Sensor.TYPE_AMBIENT_TEMPERATURE:
                    sb = new StringBuilder();
                    sb.append("当前温度为:");
                    sb.append(values[0]);
                    etTemerature.setText(sb.toString());
                    break;
                // 光传感器
                case Sensor.TYPE_LIGHT:
                    sb = new StringBuilder();
                    sb.append("当前光的强度为:");
                    sb.append(values[0]);
                    etLight.setText(sb.toString());
                    break;
                // 压力传感器
                case Sensor.TYPE_PRESSURE:
                    sb = new StringBuilder();
                    sb.append("当前压力为:");
                    sb.append(values[0]);
                    etPressure.setText(sb.toString());
                    break;
            }
        }
    }

    布局XML

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/orientation" />
    <EditText
        android:id="@+id/etOrientation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:cursorVisible="false" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/gyro" />
    <EditText
        android:id="@+id/etGyro"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:cursorVisible="false" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/magnetic" />
    <EditText
        android:id="@+id/etMagnetic"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:cursorVisible="false" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/gravity" />
    <EditText
        android:id="@+id/etGravity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:cursorVisible="false" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/linearAcc" />
    <EditText
        android:id="@+id/etLinearAcc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:cursorVisible="false" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/temperature" />
    <EditText
        android:id="@+id/etTemerature"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:cursorVisible="false" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/light" />
    <EditText
        android:id="@+id/etLight"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:cursorVisible="false" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/pressure" />
    <EditText
        android:id="@+id/etPressure"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:cursorVisible="false" />
    </LinearLayout>
    </ScrollView>

    strings

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="app_name">传感器测试</string>
        <string name="orientation">方向传感器返回的值</string>
        <string name="gyro">陀螺仪传感器返回的值</string>
        <string name="magnetic">磁场传感器返回的值</string>
        <string name="gravity">重力传感器返回的值</string>
        <string name="linearAcc">线性加速度传感器返回的值</string>
        <string name="temperature">温度传感器返回的值</string>
        <string name="light">光传感器返回的值</string>
        <string name="pressure">压力传感器返回的值</string>
    
    </resources>

    要在真机测试 

  • 相关阅读:
    Flutter
    Flutter
    Flutter
    使用Sublime Text 3作为React Native的开发IDE
    新建React Native项目步骤
    【一些容易忘记的node的npm命令】【收集】
    前端异步的一种方法库:axios
    【react】兄弟组件的通信方式,传统非redux
    【js】关于闭包和匿名函数
    【js】手机浏览器端唤起app,没有app就去下载app 的方法
  • 原文地址:https://www.cnblogs.com/AceIsSunshineRain/p/5216684.html
Copyright © 2011-2022 走看看