📌  相关文章
📜  如何以编程方式显示Android设备中存在的传感器列表?

📅  最后修改于: 2021-05-09 18:03:58             🧑  作者: Mango

全球生产的所有Android设备均带有内置传感器,可以测量运动,方向和各种环境条件。这些传感器通常通过为各种应用程序提供来自传感器的数据来促进Android体系结构。例如,温度传感器提供设备的温度,可以从中获取信息以关闭一些不需要的服务。这样的传感器是普通类型,但是广义上讲,传感器分为三种类型:

  1. 运动传感器:运动传感器测量沿三个轴xyz的加速度和旋转力。运动传感器包括加速度计,重力传感器,陀螺仪和旋转矢量传感器。
  2. 环境传感器:环境传感器可测量各种环境参数,例如压力,环境温度(室温),照明(设备上的光线)和湿度。它们包括气压计,光度计和温度计。
  3. 位置传感器:位置传感器测量设备在空间中的物理位置。它们包括方向传感器和磁力计。

Android设备中的常规传感器

通常,Android 4.4或更高版本(Kitkat)或更高版本上的所有Android设备中都包含以下传感器:

  1. 加速度计–硬件传感器–运动传感器
  2. 重力传感器–基于程序(软件)–源自运动传感器的原始数据,用于重力计算。
  3. 环境温度–硬件传感器–环境传感器
  4. 陀螺仪–硬件传感器–运动传感器
  5. 光传感器–硬件传感器–环境传感器
  6. 方向传感器–基于程序(软件)–来自位置和运动传感器的原始数据
  7. 接近传感器–硬件传感器–位置传感器

方法

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言。

步骤2:使用activity_main.xml文件

转到代表应用程序UI的activity_main.xml文件,并在ScrollView内创建一个TextView,该列表应列出设备中存在的传感器。以下是activity_main.xml文件的代码。

XML


  
    
    
  


Kotlin
import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorManager
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
  
    // Information about Sensors present in the 
    // device is supplied by Sensor Manager of the device
    private lateinit var sensorManager: SensorManager
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Initialize the variable sensorManager
        sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
  
        // getSensorList(Sensor.TYPE_ALL) lists all the sensors present in the device
        val deviceSensors: List = sensorManager.getSensorList(Sensor.TYPE_ALL)
  
        // Text View that shall display this list
        val textView = findViewById(R.id.tv)
  
        // Converting List to String and displaying 
        // every sensor and its information on a new line
        for (sensors in deviceSensors) {
            textView.append(sensors.toString() + "\n\n")
        }
    }
}


步骤4:使用MainActivity.kt文件

转到MainActivity.kt文件,并参考以下代码。下面是MainActivity.kt文件的代码。在代码内部添加了注释,以更详细地了解代码。

科特林

import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorManager
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
  
    // Information about Sensors present in the 
    // device is supplied by Sensor Manager of the device
    private lateinit var sensorManager: SensorManager
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Initialize the variable sensorManager
        sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
  
        // getSensorList(Sensor.TYPE_ALL) lists all the sensors present in the device
        val deviceSensors: List = sensorManager.getSensorList(Sensor.TYPE_ALL)
  
        // Text View that shall display this list
        val textView = findViewById(R.id.tv)
  
        // Converting List to String and displaying 
        // every sensor and its information on a new line
        for (sensors in deviceSensors) {
            textView.append(sensors.toString() + "\n\n")
        }
    }
}

输出:在模拟器上运行

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!