初识传感器

安卓传感器的分类有一下这么几种

  • 方向传感器(Orientation sensor)
  • 加速感应器(Accelerometer sensor)
  • 陀螺仪传感器(Gyroscope sensor)
  • 磁场传感器(Magnetic field sensor)
  • 距离传感器(Proximity sensor)
  • 光线传感器(Light sensor)
  • 气压传感器(Pressure sensor)
  • 温度传感器(Temperature sensor)
  • 重力感应器(Gravity sensor,Android 2.3引入)
  • 线性加速感应器(Linear acceleration sensor ,Android 2.3引入)
  • 旋转矢量传感器(Rotation vector sensor,Android 2.3)
  • 相对湿度传感器(Relative humidity sensor,Android 4.0)
  • 近场通信(NFC)传感器(Android 2.3引入),NFC和其他不一样,具有读写功能。
当然除了这些以外还有其他比如心率传感器,记步传感器,指纹传感器等

下面上一段代码来测试手机有哪几种传感器

布局代码不解释

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.bwie.yinyulong20170808.MainActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/tv_show"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </ScrollView>
</RelativeLayout>
核心代码 MainActivity

package com.yinyulong20170808;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    TextView tv_show;
    SensorManager sm;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_show= (TextView) findViewById(R.id.tv_show);
        sm= (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        List<Sensor> allSensors=sm.getSensorList(Sensor.TYPE_ALL);
        StringBuilder sb=new StringBuilder();
        sb.append("此手机有" + allSensors.size() + "个传感器,分别有:\n\n");
        for(Sensor s:allSensors){
            switch (s.getType()){
                case Sensor.TYPE_ACCELEROMETER:
                    sb.append(s.getType() + " 加速度传感器(Accelerometer sensor)" + "\n");
                    break;
                case Sensor.TYPE_GYROSCOPE:
                    sb.append(s.getType() + " 陀螺仪传感器(Gyroscope sensor)" + "\n");
                    break;
                case Sensor.TYPE_LIGHT:
                    sb.append(s.getType() + " 光线传感器(Light sensor)" + "\n");
                    break;
                case Sensor.TYPE_MAGNETIC_FIELD:
                    sb.append(s.getType() + " 磁场传感器(Magnetic field sensor)" + "\n");
                    break;
                case Sensor.TYPE_ORIENTATION:
                    sb.append(s.getType() + " 方向传感器(Orientation sensor)" + "\n");
                    break;
                case Sensor.TYPE_PRESSURE:
                    sb.append(s.getType() + " 气压传感器(Pressure sensor)" + "\n");
                    break;
                case Sensor.TYPE_PROXIMITY:
                    sb.append(s.getType() + " 距离传感器(Proximity sensor)" + "\n");
                    break;
                case Sensor.TYPE_TEMPERATURE:
                    sb.append(s.getType() + " 温度传感器(Temperature sensor)" + "\n");
                    break;
                default:
                    sb.append(s.getType() + " 其他传感器" + "\n");
                    break;
            }
            sb.append("设备名称:" + s.getName() + "\n 设备版本:" + s.getVersion() + "\n 供应商:"
                    + s.getVendor() + "\n\n");
        }
        tv_show.setText(sb.toString());
    }
}
当然了 我的代码主要是运行在模拟器上的,一般稍微有点名气的手机都可以去中关村手机在线,太平洋等,搜索到自己的机型查看相关参数

后面我们会针对一些常用的传感器的用法进行剖析,敬请期待~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值