標籤: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_(感應器)擷取手機中的感應器