Android_(传感器)获取手机中的传感器

传感器是一种检测装置,能够感受被测量的信息,并能将检测和感受到的信息按一定规律变换成电信号或其它所需形式的信息输出

Android操作系统中内置了很多的传感器(物理装置),能够探测、感受外界的信号、物理条件,并将得到的信息传递给其它的装置。

例如在部分游戏或软件可以自动识别屏幕的横竖屏来改变屏幕显示的布局

下面是Android支持的几种传感器:

加速传感器       Sensor.TYPE_ACCELEROMETER

陀螺仪传感器      Sensor.TYPE_GYROSCOPE

环境光仪传感器     Sensor.TYPE_LIGHT

电磁场传感器      Sensor.TYPE_MAGNETIC_FIELD

方向传感器       Sensor.TYPE_ORIENTATION:

压力传感器       Sensor.TYPE_PRESSURE:

距离传感器       Sensor.TYPE_PROXIMITY:

温度传感器       Sensor.TYPE_TEMPERATURE:

运行截图:

程序结构:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context="com.example.asus.gary_01.MainActivity">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="传感器操作!"
        android:textSize="10pt" />

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="获取手机传感器信息"/>

    <TextView
        android:id="@+id/textView"
        android:scrollbars="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:textSize="8pt"/>
</LinearLayout>

activity_main


package com.example.asus.gary_01;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private TextView tx1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt1 = (Button)findViewById(R.id.button);
        tx1=(TextView)findViewById(R.id.textView);
        //从系统获得传感器管理器
        final SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str;
                //从传感器管理器中获得全部的传感器列表
                List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);
                int i;
                //给ViewText添加滚动条
                tx1.setMovementMethod(ScrollingMovementMethod.getInstance());
                //显示有多少个传感器
                tx1.setText("经检测该手机有"+allSensors.size()+"个传感器,它们分别是:");
                Sensor s;
                //显示每个传感器的具体信息
                for(i=0;i<allSensors.size();i++)
                {
                    s=allSensors.get(i);
                    str="设备名称:"+s.getName();
                    switch(s.getType())
                    {
                        //加速传感器     Sensor.TYPE_ACCELEROMETER
                        case Sensor.TYPE_ACCELEROMETER:
                            tx1.setText(tx1.getText()+"\n"+i+"加速传感器accelerometer:\n"+str);
                            break;
                        //陀螺仪传感器    Sensor.TYPE_GYROSCOPE
                        case Sensor.TYPE_GYROSCOPE:
                            tx1.setText(tx1.getText()+"\n"+i+"陀螺仪传感器gyroscope:\n"+str);
                            break;
                        //环境光仪传感器   Sensor.TYPE_LIGHT
                        case Sensor.TYPE_LIGHT:
                            tx1.setText(tx1.getText()+"\n"+i+"环境光仪传感器light:\n"+str);
                            break;
                        //电磁场传感器    Sensor.TYPE_MAGNETIC_FIELD
                        case Sensor.TYPE_MAGNETIC_FIELD:
                            tx1.setText(tx1.getText()+"\n"+i+"电磁场传感器magnetic:\n"+str);
                            break;
                        //方向传感器    Sensor.TYPE_ORIENTATION:
                        case Sensor.TYPE_ORIENTATION:
                            tx1.setText(tx1.getText()+"\n"+i+"方向传感器orientation:\n"+str);
                            break;
                        //压力传感器     Sensor.TYPE_PRESSURE:
                        case Sensor.TYPE_PRESSURE:
                            tx1.setText(tx1.getText()+"\n"+i+"压力传感器pressure:\n"+str);
                            break;
                        //距离传感器     Sensor.TYPE_PROXIMITY:
                        case Sensor.TYPE_PROXIMITY:
                            tx1.setText(tx1.getText()+"\n"+i+"距离传感器proximity:\n"+str);
                            break;
                        //温度传感器     Sensor.TYPE_TEMPERATURE:
                        case Sensor.TYPE_TEMPERATURE:
                            tx1.setText(tx1.getText()+"\n"+i+"温度传感器temperature:\n"+str);
                            break;

                            default:
                                tx1.setText(tx1.getText()+"\n"+i+"未知传感器:\n"+str);
                                break;
                    }
                }
            }
        });
    }
}

MainActivity

一、界面布局

  两个TextView,一个Button,下方的TextView支持滚动操作

  点击Button,获得手机传感器并显示在下方TextView上

  给textview添加滚动条:传送门

  xml代码:

  //设置滚动条的方向

  android:scrollbars="vertical"

  java中设置

  tx1=(TextView) findViewById(R.id.tv1);

  //设置滚动方式
  tx1.setMovementMethod(ScrollingMovementMethod.getInstance());

二、实现程序

//从系统获得传感器管理器final SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
//从传感器管理器中获得全部的传感器列表List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);
bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str;
                //从传感器管理器中获得全部的传感器列表
                List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);
                int i;
                //给ViewText添加滚动条
                tx1.setMovementMethod(ScrollingMovementMethod.getInstance());
                //显示有多少个传感器
                tx1.setText("经检测该手机有"+allSensors.size()+"个传感器,它们分别是:");
                Sensor s;
                //显示每个传感器的具体信息
                for(i=0;i<allSensors.size();i++)
                {
                    s=allSensors.get(i);
                    str="设备名称:"+s.getName();
                    switch(s.getType())
                    {
                        //加速传感器     Sensor.TYPE_ACCELEROMETER
                        case Sensor.TYPE_ACCELEROMETER:
                            tx1.setText(tx1.getText()+"\n"+i+"加速传感器accelerometer:\n"+str);
                            break;
                        //陀螺仪传感器    Sensor.TYPE_GYROSCOPE
                        case Sensor.TYPE_GYROSCOPE:
                            tx1.setText(tx1.getText()+"\n"+i+"陀螺仪传感器gyroscope:\n"+str);
                            break;
                        //环境光仪传感器   Sensor.TYPE_LIGHT
                        case Sensor.TYPE_LIGHT:
                            tx1.setText(tx1.getText()+"\n"+i+"环境光仪传感器light:\n"+str);
                            break;
                        //电磁场传感器    Sensor.TYPE_MAGNETIC_FIELD
                        case Sensor.TYPE_MAGNETIC_FIELD:
                            tx1.setText(tx1.getText()+"\n"+i+"电磁场传感器magnetic:\n"+str);
                            break;
                        //方向传感器    Sensor.TYPE_ORIENTATION:
                        case Sensor.TYPE_ORIENTATION:
                            tx1.setText(tx1.getText()+"\n"+i+"方向传感器orientation:\n"+str);
                            break;
                        //压力传感器     Sensor.TYPE_PRESSURE:
                        case Sensor.TYPE_PRESSURE:
                            tx1.setText(tx1.getText()+"\n"+i+"压力传感器pressure:\n"+str);
                            break;
                        //距离传感器     Sensor.TYPE_PROXIMITY:
                        case Sensor.TYPE_PROXIMITY:
                            tx1.setText(tx1.getText()+"\n"+i+"距离传感器proximity:\n"+str);
                            break;
                        //温度传感器     Sensor.TYPE_TEMPERATURE:
                        case Sensor.TYPE_TEMPERATURE:
                            tx1.setText(tx1.getText()+"\n"+i+"温度传感器temperature:\n"+str);
                            break;

                            default:
                                tx1.setText(tx1.getText()+"\n"+i+"未知传感器:\n"+str);
                                break;
                    }
                }
            }
        });
 

原文地址:https://www.cnblogs.com/1138720556Gary/p/9279841.html

时间: 2024-10-07 11:23:12

Android_(传感器)获取手机中的传感器的相关文章

获取手机中所有已安装的应用,并判断是否系统应用

//获取手机中所有已安装的应用,并判断是否系统应用 ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); //用来存储获取的应用信息数据,手机上安装的应用数据都存在appList里 List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);   for(int i = 0; i < packages.size(); i++

【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 [java] view plaincopyprint? PackageManager packageManager = this.getPackageManager(); List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0); 通过以上方法,可以得到手机中安装的所有应用程序,既包括了手动安装的apk包的信

iOS - 获取手机中所有图片

1 #import <AssetsLibrary/AssetsLibrary.h> 3 4 5 /** 6 * ALAssetsLibrary.h 代表资源库(所有的视频,照片) 7 ALAssetsGroup.h 代表资源库中的相册 8 ALAsset.h 代表相册中一个视频或者一张照片 9 ALAssetRepresentation.h 代表一个资源的描述,可以获取到原始图片 10 */ 11 12 @interface ViewController () 13 14 @property

获取手机中内外存储卡

手机的内外存储卡介绍可以参考博客:http://blog.sina.com.cn/s/blog_5da93c8f0102vcam.html public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_main_la

获取应用版本号,版本名称,包名,AppName,图标,是否是系统应用,获取手机中所有应用,所有进程

PackageManager packageManager = getPackageManager(); PackageInfo packageInfo; = packageManager.getPackageInfo("com.kimliu.mobilesafe", 0); Drawable icon = packageInfo.applicationInfo.loadIcon(packageManager); String packageName = packageInfo.pac

进阶篇-安卓系统:3.初识安卓手机内置传感器

在第二代智能手机问世之后,安卓手机中的传感器就变得越来越多了. 这次笔记就认识一下安卓内置传感器的种类吧. 如果想要获取安卓手机中所有的内置传感器的名字: import android.hardware.Sensor; import android.hardware.SensorManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import java.util.List; pub

Android之——获取手机安装的应用程序

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47114331 前几篇有关Android的博文中,向大家介绍了几个项目中常用的实用功能,那么在这篇博文中,我将向大家介绍如何获取Android手机中已经安装的手机应用程序,实用过金山手机卫士或者360手机卫士的童鞋都知道,这些软件都可以获取到当前手机中安装的应用程序.那么,这些功能是如何实现的呢?就让我们一起来看看这些功能具体是如何实现的吧. 一.原理 原理很简单,我们通过Andr

【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)

为了实现一个功能,需要搜集手机信息,自己先在网上找了相关信息进行了汇总,主要是汇集手机的信息,一般想要的信息在手机设置->关于手机->状态消息里面包含了手机的各种信息,下面的代码中也主要显示了那些信息,但是源码的方法我还没有看,先把总结的贴出来.先上图(太多就截取几个).  上代码啦,太多了,就写主要代码了. // 获取Android手机中SD卡存储信息 获取剩余空间 public void getSDCardInfo() { // 在manifest.xml文件中要添加 /* * <u

Android获取手机相关信息

首先,一个小例子: package com.brio.testid; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.os.Bundle; import android.provider.Settings.Secure; import android.widget.TextView; public class MainActivity extends Activity {