Android 中支援的幾種感應器

來源:互聯網
上載者:User

  1. ACCELEROMETER 加速,描述加速度的。

  2.GRAVITY 重力,這個在大家都知道。

  3.GYROSCOPE 陀螺儀,對於物體跌落檢測更強大些,開發遊戲少了它會有點遺憾的,API Level 9新增的類型。

  4. LIGHT 光線感應器,很多Android手機的螢幕亮度是根據這個感應器的數組自動調節的。

  5. LINEAR_ACCELERATION 線性加速器,API Level 9新增的。

  6. MAGNETIC_FIELD 磁極感應器。

  7. ORIENTATION 方向感應器。

  8. PRESSURE 壓力感應器。  

  9. PROXIMITY 距離感應器,對於通話後關閉螢幕背光很有用。

  10. ROTATION_VECTOR 旋轉向量,Android 2.3新增的,如果我們過去處理映像會發現這個還是很有用的,不過這裡還是對遊戲開發起到輔助。

  11. TEMPERATURE 溫度感應器,可以擷取手機的內部溫度,不過和周邊的有些差距,畢竟手機內部一般溫度比較高。

package com.HelloSensor;              import java.util.List;              import android.app.Activity;       import android.content.Context;       import android.hardware.Sensor;       import android.hardware.SensorEvent;       import android.hardware.SensorEventListener;       import android.hardware.SensorManager;       import android.os.Bundle;       import android.widget.TextView;              public class HelloSensor extends Activity {           Sensor sensor ;           private float x, y, z;           /** Called when the activity is first created. */           @Override           public void onCreate(Bundle savedInstanceState) {               super.onCreate(savedInstanceState);               setContentView(R.layout.main);                      //準備顯示資訊的UI組建               final TextView tx1 = (TextView) findViewById(R.id.TextView01);                      //從系統服務中獲得感應器管理器               SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);                      //從感應器管理器中獲得全部的感應器列表               List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);                      //顯示有多少個感應器               tx1.setText("經檢測該手機有" + allSensors.size() + "個感應器,他們分別是:\n");                      //顯示每個感應器的具體資訊               for (Sensor s : allSensors) {                          String tempString = "\n" + "  裝置名稱:" + s.getName() + "\n" + "  裝置版本:" + s.getVersion() + "\n" + "  供應商:"                           + s.getVendor() + "\n";                          switch (s.getType()) {                   case Sensor.TYPE_ACCELEROMETER:                       tx1.setText(tx1.getText().toString() + s.getType() + " 加速度感應器accelerometer" + tempString);                       break;                   case Sensor.TYPE_GRAVITY:                       tx1.setText(tx1.getText().toString() + s.getType() + " 重力感應器gravity API 9" + tempString);                       break;                   case Sensor.TYPE_GYROSCOPE:                       tx1.setText(tx1.getText().toString() + s.getType() + " 陀螺儀感應器gyroscope" + tempString);                       break;                   case Sensor.TYPE_LIGHT:                       tx1.setText(tx1.getText().toString() + s.getType() + " 環境光線感應器light" + tempString);                       break;                   case Sensor.TYPE_LINEAR_ACCELERATION:                       tx1.setText(tx1.getText().toString() + s.getType() + " 線性加速器LINEAR_ACCELERATION API 9" + tempString);                       break;                   case Sensor.TYPE_MAGNETIC_FIELD:                       tx1.setText(tx1.getText().toString() + s.getType() + " 電磁場感應器magnetic field" + tempString);                       break;                   case Sensor.TYPE_ORIENTATION:                       tx1.setText(tx1.getText().toString() + s.getType() + " 方向感應器orientation" + tempString);                       break;                   case Sensor.TYPE_PRESSURE:                       tx1.setText(tx1.getText().toString() + s.getType() + " 壓力感應器pressure" + tempString);                       break;                   case Sensor.TYPE_PROXIMITY:                       tx1.setText(tx1.getText().toString() + s.getType() + " 距離感應器proximity" + tempString);                       break;                   case Sensor.TYPE_ROTATION_VECTOR:                       tx1.setText(tx1.getText().toString() + s.getType() + " 旋轉向量ROTATION" + tempString);                       break;                   case Sensor.TYPE_TEMPERATURE:                       tx1.setText(tx1.getText().toString() + s.getType() + " 溫度感應器temperature" + tempString);                       break;                   default:                       tx1.setText(tx1.getText().toString() + s.getType() + " 未知感應器" + tempString);                       break;                   }               }                               //在title上顯示重力感應器的變化               sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);               SensorEventListener lsn = new SensorEventListener() {                   public void onSensorChanged(SensorEvent e) {                       x = e.values[SensorManager.DATA_X];                       y = e.values[SensorManager.DATA_Y];                       z = e.values[SensorManager.DATA_Z];                       setTitle("x=" + (int) x + "," + "y=" + (int) y + "," + "z="+ (int) z);                   }                          public void onAccuracyChanged(Sensor s, int accuracy) {                   }               };               // 註冊listener,第三個參數是檢測的精確度               sm.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);                  }       } 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.