博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
检测手机传感器【Sensor】
阅读量:5996 次
发布时间:2019-06-20

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

      今天做了一个小Demo,主要是检测手机传个器种类个数,代码如下。

View Code

 

View Code
package com.example.sensordemo;import java.util.List;import android.app.Activity;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.text.method.ScrollingMovementMethod;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity {    private TextView tv_view;    private Sensor sensor;    private float x, y, z;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.activity_main, menu);        return true;    }    private void init() {        tv_view = (TextView) this.findViewById(R.id.tv_view);        /** 设置实例化滚动方法 */        tv_view.setMovementMethod(ScrollingMovementMethod.getInstance());                // 从系统服务中获得传感器管理器        SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);        // 从传感器管理器中获得全部的传感器列表        List
allSensors = sm.getSensorList(Sensor.TYPE_ALL); // 显示有多少个传感器 tv_view.setText("经检测手机有" + "【" + allSensors.size() + "】" + "个传感器。" + "\n" + "他们分别是:\n"); // 显示每个传感器的具体信息 for (Sensor s : allSensors) { String temp = "\n" + "设备名称:" + s.getName() + "\n" + "设备版本:" + s.getVersion() + "\n" + "设备供应商:" + s.getVendor() + "\n"; switch (s.getType()) { case Sensor.TYPE_ACCELEROMETER: tv_view.setText(tv_view.getText().toString() + s.getType() + "加速度传感器:" + temp); break; case Sensor.TYPE_GRAVITY: tv_view.setText(tv_view.getText().toString() + s.getType() + " 重力传感器:" + temp); break; case Sensor.TYPE_GYROSCOPE: tv_view.setText(tv_view.getText().toString() + s.getType() + " 陀螺仪传感器:" + temp); break; case Sensor.TYPE_LIGHT: tv_view.setText(tv_view.getText().toString() + s.getType() + " 环境光线传感器:" + temp); break; case Sensor.TYPE_LINEAR_ACCELERATION: tv_view.setText(tv_view.getText().toString() + s.getType() + " 线性加速器:" + temp); break; case Sensor.TYPE_MAGNETIC_FIELD: tv_view.setText(tv_view.getText().toString() + s.getType() + " 电磁场传感器:" + temp); break; case Sensor.TYPE_ORIENTATION: tv_view.setText(tv_view.getText().toString() + s.getType() + " 方向传感器:" + temp); break; case Sensor.TYPE_PRESSURE: tv_view.setText(tv_view.getText().toString() + s.getType() + " 压力传感器:" + temp); break; case Sensor.TYPE_PROXIMITY: tv_view.setText(tv_view.getText().toString() + s.getType() + " 距离传感器:" + temp); break; case Sensor.TYPE_ROTATION_VECTOR: tv_view.setText(tv_view.getText().toString() + s.getType() + " 旋转向量:" + temp); break; case Sensor.TYPE_TEMPERATURE: tv_view.setText(tv_view.getText().toString() + s.getType() + " 温度传感器:" + temp); break; default: tv_view.setText(tv_view.getText().toString() + s.getType() + " 未知传感器:" + temp); break; } } // 在title上显示重力传感器的变化 sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); SensorEventListener lsn = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent e) { // TODO Auto-generated method stub x = e.values[SensorManager.DATA_X]; y = e.values[SensorManager.DATA_Y]; z = e.values[SensorManager.DATA_Z]; setTitle("x=" + (int) x + "," + "y=" + (int) y + "," + "z="+ (int) z); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } }; // 注册listener,第三个参数是检测的精确度 sm.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME); }}

 

效果图:

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

你可能感兴趣的文章
真香!Kotlin+MVVM+LiveData+协程 打造 Wanandroid!
查看>>
iOS学习资源(三)
查看>>
AndroidStudio 性能优化指南(Windows 篇)
查看>>
在K8S上搭建Redis集群
查看>>
Vue-router create-route-map 源码分享
查看>>
Spring Cloud Netflix—注册安全应用程序
查看>>
rpop 和 brpop的区别
查看>>
iOS内购开发以及遇到的问题
查看>>
cookie 简介
查看>>
ios和android内嵌h5页面联调小结
查看>>
PHP SG扩展管理Superglobals
查看>>
SQL中遇到的数据类型及其使用方法(整理中)
查看>>
品友互动斩获IAI国际广告奖 智能商业决策大脑的多维度升级
查看>>
浅析企业移动化诉求与开发者之间的矛盾
查看>>
赵童鞋带你入门PHP(二) 开发工具预备
查看>>
一步一步读懂JS继承模式
查看>>
Natsuha - 用Taro写个天气微信小程序
查看>>
python函数高级
查看>>
如何编写高质量代码
查看>>
geohash简单应用-面对面匹配好友
查看>>