編輯:Android編程入門
現在每部Android 手機裡面都會內置有許多的傳感器,它們能夠監測到各種發生在手機上的物理事件,而我們只要靈活運用這些事件就可以編寫出很多好玩的應用程序。今天我們開始簡單的傳感器使用的學習。
目錄導航:
一、 手機傳感器的介紹:
二、 手機基本支持的傳感器類型:
從Android1.5開始,系統內置了對多達八種傳感器的支持,他們分別是:加速度傳感器(accelerometer)、陀螺儀(gyroscope)、環境光照傳感器(light)、磁力傳感器(magnetic field)、方向傳感器(orientation)、壓力傳感器(pressure)、距離傳感器(proximity)和溫度傳感器(temperature)。
三、 傳感器的一些使用說明
String service_name = Context.SENSOR_SERVICE; SensorManager sensorManager = (SensorManager)getSystemService(service_name);
第一種:獲取某種傳感器的默認傳感器:
Sensor defaultGyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
第二種:獲取某種傳感器的列表:
List<Sensor> pressureSensors = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);
第三種:獲取所有傳感器的列表:
List<Sensor> allSensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
四、 對於一個傳感器,信息的獲取:
方法 描述 getMaximumRange() 最大取值范圍 getName() 設備名稱 getPower() 功率 getResolution() 精度 getType() 傳感器類型 getVentor() 設備供應商 getVersion() 設備版本號
五、 現階段Android支持的常用傳感器有8種:
傳感器類型常量 內部整數值 中文名稱 Sensor.TYPE_ACCELEROMETER 1 加速度傳感器 Sensor.TYPE_MAGNETIC_FIELD 2 磁力傳感器 Sensor.TYPE_ORIENTATION 3 方向傳感器 Sensor.TYPE_GYROSCOPE 4 陀螺儀傳感器 Sensor.TYPE_LIGHT 5 環境光照傳感器 Sensor.TYPE_PRESSURE 6 壓力傳感器 Sensor.TYPE_TEMPERATURE 7 溫度傳感器 Sensor.TYPE_PROXIMITY 8 距離傳感器
我們創建一個傳感器的應用實例,項目結構如下:
一、 在MainActivity中初始化一些信息:
private final static String TAG = "SensorTest"; private TextView textView; SensorManager sm = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); }
二、 得到手機上支持的所有傳感器類型:創建一個方法
// 顯示手機支持的傳感器的清單 public void allSensors(View view) { //從系統服務中獲得傳感器管理器 //從傳感器管理器中獲得全部的傳感器列表 List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL); Log.i(TAG, "allsensors: " + allSensors.size()); //顯示每個傳感器的具體信息 for (Sensor sensor : allSensors) { String name = sensor.getName(); String vendor = sensor.getVendor(); int version = sensor.getVersion(); Log.i(TAG, "name: " + name + ", vendor: " + vendor + ", version: " + version); } }
三、 光傳感器的簡單使用:
// 光照傳感器的使用 public void lightSensors(View view) { Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT); sm.registerListener(LightListener, sensor, SensorManager.SENSOR_DELAY_NORMAL); } // 光照傳感器的事件 private SensorEventListener LightListener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { float value = event.values[0]; Sensor sensor = event.sensor; textView.setText(value + ""); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { Log.i(TAG, "on accuracy change: " + accuracy); } };
四、 加速度傳感器的簡單使用:
// 加速度傳感器 public void accelerSensors(View view) { Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sm.registerListener(AcclerListener, sensor, SensorManager.SENSOR_DELAY_NORMAL); } // 加速度傳感器的事件 private SensorEventListener AcclerListener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { // 加速度可能會是負值,所以要取它們的絕對值 float xValue = Math.abs(event.values[0]); float yValue = Math.abs(event.values[1]); float zValue = Math.abs(event.values[2]); if (xValue > 15 || yValue > 15 || zValue > 15) { // 認為用戶搖動了手機,觸發搖一搖邏輯 Toast.makeText(MainActivity.this, "搖一搖", Toast.LENGTH_SHORT).show(); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { Log.i(TAG, "on accuracy change: " + accuracy); } };
五、 在onDestory方法調用unregisterListener()方法來釋放使用的資源。
@Override protected void onDestroy() { super.onDestroy(); if (sm != null) { sm.unregisterListener(LightListener); sm.unregisterListener(AcclerListener); } }
六、 顯示結果:
allsensors: 27 name: Accelerometer, vendor: STMicroelectronics, version: 1 name: Magnetometer, vendor: AKM, version: 1 name: Magnetometer Uncalibrated, vendor: AKM, version: 1 name: Gyroscope, vendor: STMicroelectronics, version: 1 name: Gyroscope Uncalibrated, vendor: STMicroelectronics, version: 1 name: Proximity Sensor, vendor: TAOS, version: 1 name: Ambient Light Sensor, vendor: TAOS, version: 1 name: Barometer Sensor, vendor: BOSCH, version: 1 name: Temperature Sensor, vendor: BOSCH, version: 1 name: Gravity, vendor: Qualcomm, version: 1 name: Linear Acceleration, vendor: Qualcomm, version: 1 name: Rotation Vector, vendor: Qualcomm, version: 1 name: Step Detector, vendor: Qualcomm, version: 1 name: Step Counter, vendor: Qualcomm, version: 1 name: Significant Motion Detector, vendor: Qualcomm, version: 1 name: Game Rotation Vector, vendor: Qualcomm, version: 1 name: Geomagnetic Rotation Vector, vendor: Qualcomm, version: 1 name: Orientation, vendor: Qualcomm, version: 1 name: AMD, vendor: Qualcomm, version: 1 name: RMD, vendor: Qualcomm, version: 1 name: Basic Gestures, vendor: Qualcomm, version: 1 name: Facing, vendor: Qualcomm, version: 1 name: Tilt, vendor: Qualcomm, version: 1 name: Pedometer, vendor: Qualcomm, version: 1 name: PEDESTRIAN-ACTIVITY-MONITOR, vendor: Qualcomm, version: 1 name: Motion Accel, vendor: Qualcomm, version: 1 name: Temperature Sensor, vendor: BOSCH, version: 1
.xml<?xml version=1.0 encoding=utf-8?><LinearLayout xmlns:android=http://sch
今天總結下這段時間對於android studio的使用情況,也對剛使用的朋友一些參考,之前一直使用Eclipse
Android Wear是連接安卓手機和可穿戴產品的一個平台。自從今年上半年發布以來,Android Wear獲得了大量關注,既有來自消費者的關注,也有來自開發商的關注,
IPC的一些基本概念,Serializable接口,Parcelable接口,已經Binder。此核心為最後的IBookManager.java類!!!Serializa