Android_(感應器)擷取手機中的感應器

來源:互聯網
上載者:User

標籤:apk   alt   you   height   操作   str   傳遞   llb   encoding   

 

感應器是一種檢測裝置,能夠感受被測量的資訊,並能將檢測和感受到的資訊按一定規律變換成電訊號或其它所需形式的資訊輸出

 

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;                    }                }            }        });

 

 

Android_(感應器)擷取手機中的感應器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.