• 大小: 788KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Java
  • 标签: 传感器  

资源简介

实现:1、应用级屏幕亮度随关照强度变化 2、基于计步传感器的简易步数统计 3、基于地磁传感器与加速度传感器的简易指南针

资源截图

代码片段和文件信息

package com.example.logaxy.sensors;

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.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;

public class Compass extends AppCompatActivity {

    private SensorManager sensorManager;
    private ImageView compassImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_compass);

        compassImage = (ImageView) findViewById(R.id.compassImage);

        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

        //获取加速度传感器
        Sensor acceleromenterSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        //获取地磁传感器
        Sensor magneticSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

        sensorManager.registerListener(listener acceleromenterSensor SensorManager.SENSOR_DELAY_UI);
        sensorManager.registerListener(listener magneticSensor SensorManager.SENSOR_DELAY_UI);

    }

    SensorEventListener listener = new SensorEventListener() {

        float[] acceleromenterValues = new float[3];
        float[] magneticValues = new float[3];

        private float lastRotateDegree;

        @Override
        public void onSensorChanged(SensorEvent event) {

            //获取加速度传感器和地磁传感器的数据,并复制到两个数组中去
            if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
                acceleromenterValues = event.values.clone();
            else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
                magneticValues = event.values.clone();

            //旋转矩阵R[]用来保存磁场数据和加速度数据
            float[] R = new float[9];
            float[] values = new float[3];

            //根据acceleromenterSensor和magneticSensor的数据填充旋转矩阵R[]
            SensorManager.getRotationMatrix(R null acceleromenterValues magneticValues);
            //根据旋转矩阵R[]填充values[]
            SensorManager.getOrientation(R values);

            //获取方向角度,实现指南针为旋转背景图片,此处将角度取反
            float rotateDegree = -(float) Math.toDegrees(values[0]);

            //角度变化大于2时,旋转图片
            if (Math.abs(rotateDegree - lastRotateDegree) > 2) {
                RotateAnimation animation = new RotateAnimation(lastRotateDegree rotateDegree
                        Animation.RELATIVE_TO_SELF 0.5f Animation.RELATIVE_TO_SELF 0.5f);
                animation.setFillAfter(true);
                compassImage.startAnimation(animation);
                lastRotateDegree = rotateDegree;
            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor int accuracy) {

        }
    };
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        945  2017-02-25 11:10  Sensor\main\AndroidManifest.xml

     文件       3207  2017-02-25 11:35  Sensor\main\java\com\example\logaxy\sensors\Compass.java

     文件       2440  2017-02-25 11:21  Sensor\main\java\com\example\logaxy\sensors\Light.java

     文件       1456  2017-02-23 16:35  Sensor\main\java\com\example\logaxy\sensors\MainActivity.java

     文件       1784  2017-02-25 10:27  Sensor\main\java\com\example\logaxy\sensors\SensorsApplications.java

     文件       1304  2017-02-22 13:11  Sensor\main\java\com\example\logaxy\sensors\ShowAllSensors.java

     文件       1435  2017-02-25 10:27  Sensor\main\java\com\example\logaxy\sensors\StepCounter.java

     文件     255448  2017-02-24 12:56  Sensor\main\res\drawable\arrow.png

     文件     514514  2017-02-24 13:22  Sensor\main\res\drawable\compass.png

     文件        231  2017-02-22 12:38  Sensor\main\res\drawable\greencricle.xml

     文件        231  2017-02-22 12:38  Sensor\main\res\drawable\orangecricle.xml

     文件       1086  2017-02-24 13:18  Sensor\main\res\layout\activity_compass.xml

     文件        979  2017-02-25 10:27  Sensor\main\res\layout\activity_light.xml

     文件       1703  2017-02-22 12:52  Sensor\main\res\layout\activity_main.xml

     文件       1245  2017-02-24 13:04  Sensor\main\res\layout\activity_sensors_applications.xml

     文件       1073  2017-02-22 13:07  Sensor\main\res\layout\activity_show_all_sensors.xml

     文件       1212  2017-02-25 10:27  Sensor\main\res\layout\activity_step_counter.xml

     文件       3418  2017-02-22 10:31  Sensor\main\res\mipmap-hdpi\ic_launcher.png

     文件       2206  2017-02-22 10:31  Sensor\main\res\mipmap-mdpi\ic_launcher.png

     文件       4842  2017-02-22 10:31  Sensor\main\res\mipmap-xhdpi\ic_launcher.png

     文件       7718  2017-02-22 10:31  Sensor\main\res\mipmap-xxhdpi\ic_launcher.png

     文件      10486  2017-02-22 10:31  Sensor\main\res\mipmap-xxxhdpi\ic_launcher.png

     文件        214  2017-02-22 10:31  Sensor\main\res\values\colors.xml

     文件        216  2017-02-22 10:31  Sensor\main\res\values\dimens.xml

     文件         73  2017-02-22 10:31  Sensor\main\res\values\strings.xml

     文件        394  2017-02-22 10:31  Sensor\main\res\values\styles.xml

     文件        364  2017-02-22 10:31  Sensor\main\res\values-w820dp\dimens.xml

     目录          0  2017-02-25 11:38  Sensor\main\java\com\example\logaxy\sensors

     目录          0  2017-02-25 11:38  Sensor\main\java\com\example\logaxy

     目录          0  2017-02-25 11:38  Sensor\main\java\com\example

............此处省略17个文件信息

评论

共有 条评论