編輯:Android開發實例
在Android 2.3中新增了3個感應器,對於Android平台的開發我們通過感應器可以發揮想象設計出一些很實用的軟件。下面就一起看下目前API11個感應器分別是什麼吧。
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 溫度感應器,可以獲取手機的內部溫度,不過和周邊的有些差距,畢竟手機內部一般溫度比較高。
Java代碼:
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 API9" + 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);
}
}
本人小菜一個。目前只見過兩種彈出框的實現方式,第一種是最常見的PopupWindow,第二種也就是Activity的方式是前幾天才見識過。感覺很霸氣哦。沒想到,a
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
一般來說。熟悉Android程序設計的人都知道Android有三個基礎組件Activity,Service和BroadcastReceiver,他們都是依賴Int