當前位置:首頁 » 安卓系統 » android重力感應開發

android重力感應開發

發布時間: 2025-02-12 06:23:15

❶ android手機都有哪些sensor

1.Sensor Type
重力感應/加速度感測器 (G-Sensor)
光感應 (Light-Sensor)
溫度感應
方向感應
磁場、
臨近性

2.如何實現Sensor編程
a.獲取系統服務(SENSOR_SERVICE)返回一個SensorManager 對象
sensormanager = (SensorManager)getSystemSeriver(SENSOR_SERVICE);
b.通過SensorManager對象獲取相應的Sensor類型的對象
sensorObject = sensormanager.getDefaultSensor(sensor Type);
c.聲明一個SensorEventListener 對象用於偵聽Sensor 事件,並重載onSensorChanged方法
SensorEventListener sensorListener = new SensorEventListener(){
};
d.注冊相應的SensorService
sensormanager.registerListener(sensorListener, sensorObject, Sensor TYPE);
e.銷毀相應的SensorService
sensormanager.unregisterListener(sensorListener, sensorObject);

f: SensorListener 介面是感測器應用程序的中心。它包括兩個必需方法:
onSensorChanged(int sensor,float values[]) 方法在感測器值更改時調用。
該方法只對受此應用程序監視的感測器調用(更多內容見下文)。該方法的參數包括:一個整數,指示更改的感測器;一個浮點值數組,表示感測器數據本身。有些感測器只提供一個數據值,另一些則提供三個浮點值。方向和加速表感測器都提供三個數據值。
當感測器的准確性更改時,將調用 onAccuracyChanged(int sensor,int accuracy) 方法。參數包括兩個整數:一個表示感測器,另一個表示該感測器新的准確值。

3.關於G-Sensor
Android 加速度感測器的類型是 Sensor.TYPE_ACCELEROMETER
通過 android.hardware.SensorEvent 返回加速度感測器值。
加速度感測器返回值的單位是加速度的單位 m/s^2(米每二次方秒),有三個方向的值分別是
values[0]: x-axis 方向加速度
values[1]: y-axis 方向加速度
values[2]: z-axis 方向加速度
其中x,y,z方向的定義是以水平放置在的手機的右下腳為參照系坐標原點
x 方向就是手機的水平方向,右為正
y 方向就是手機的水平垂直方向,前為正
y 方向就是手機的空間垂直方向,天空的方向為正,地球的方向為負
需要注意的是,由於地球固有的重力加速度g (值為9.8 m/s^2),
因此現實中實際加速度值應該是 z方向返回值 - 9.8 m/s^2.
比如你以 2 m/s^2 的加速度將手機拋起,這時z方向的返回值應該是 11.8 m/s^2.
反之若以手機以2 m/s^2 的加速度墜落,則z方向的返回值應該是 7.8 m/s^2.
x,y方向則沒有上述限制。

❷ android 不是activity怎麼監測屏幕旋轉

Camera相關的程序,被屏幕旋轉搞得頭大,一方面得考慮屏幕旋轉後布局的變化,另一方面得搞清楚屏幕的旋轉方向、角度與Camera的Preview角度的關系。本來通過重載Activity的onConfigurationChanged方法,可以檢測到屏幕旋轉,但發現有一個問題,它只能檢測水平方向與垂直方向的切換,無法檢測180度的跳轉(例如:水平方向突然轉180度到水平方向),所以最後不得不換成OrientationEventListener方法來解決問題。在這里分享下經驗,並就此順便總結下Android開發中屏幕旋轉的處理吧。

1. 不做任何處理的情況下

如果沒有針對性地做任何處理的話,默認情況下,當用戶手機的重力感應器打開後,旋轉屏幕方向,會導致app的當前activity發生onDestroy-> onCreate,會重新構造當前activity和界面布局,很多橫屏/豎屏的布局如果沒有很好的設計的話,轉換為豎屏/橫屏後,會顯示地很難看。

如果想很好地支持屏幕旋轉,則建議在res中建立layout-land和layout-port兩個文件夾,把橫屏和豎屏的布局文件放入對應的layout文件夾中。

2. 如何設置固定的屏幕方向

在AndroidManifest.xml對應的 activity 屬性中,添加:

android:screenOrientation="landscape" //橫屏
android:screenOrientation="portrait" //豎屏

那麼,默認的情況下,應用啟動後,會固定為指定的屏幕方向,即使屏幕旋轉,Activity也不會出現銷毀或者轉向等任何反應。

3. 強制開啟屏幕旋轉效果

如果用戶的手機沒有開啟重力感應器或者在AndroidManifest.xml中設置了android:screenOrientation,默認情況下,該Activity不會響應屏幕旋轉事件。如果在這種情況下,依然希望Activity能響應屏幕旋轉,則添加如下代碼:

// activity的 onCreate 函數中
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);

4. 屏幕旋轉時,不希望activity被銷毀

如果希望捕獲屏幕旋轉事件,並且不希望activity 被銷毀,方法如下:

(1)在AndroidManifest.xml對應的activity屬性中,添加:

android:configChanges="orientation|screenSize"

(2)在對應的activity中,重載函數onConfigurationChanged

@Override
public voidonConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}

在該函數中可以通過兩種方法檢測當前的屏幕狀態:

第一種:

判斷newConfig是否等於Configuration.ORIENTATION_LANDSCAPE,Configuration.ORIENTATION_PORTRAIT

當然,這種方法只能判斷屏幕是否為橫屏,或者豎屏,不能獲取具體的旋轉角度。

第二種:

調用this.getWindowManager().getDefaultDisplay().getRotation();

該函數的返回值,有如下四種:

Surface.ROTATION_0,Surface.ROTATION_90,Surface.ROTATION_180,Surface.ROTATION_270

其中,Surface.ROTATION_0 表示的是手機豎屏方向向上,後面幾個以此為基準依次以順時針90度遞增。

(3) 這種方法的Bug

最近發現這種方法有一個Bug,它只能一次旋轉90度,如果你突然一下子旋轉180度,onConfigurationChanged函數不會被調用。

❸ android怎麼判斷手機重力感應是否開啟

ndroid中檢測重力感應變化大致需要下面幾個步驟:

1) 得到感測器服務 getSystemService(SENSOR_SERVICE);
得到一個SensorManager,用來管理分配調度處理Sensor的工作,注意它並不服務運行於後台,真正屬於Sensor的系統服務是SensorService,終端下#service list可以看到sensorservice: [android.gui.SensorServer]。
2) 得到感測器類型 getDefaultSensor(Sensor.TYPE_GRAVITY);
當然還有各種千奇百怪的感測器,可以查閱Android官網API或者源碼Sensor.java

3) 注冊監聽器 SensorEventListener
應用程序打開一個監聽介面,專門處理感測器的數據,這個監聽機制比較重要,被系統廣泛使用。
4) 實現監聽器的回調函數 onSensorChanged, onAccuracyChanged

❹ android的模擬器怎樣模擬重力感應器

首先,在官網上下載sensorsimulator-1.0.0-beta1.zip文件,其中主要包括重力感應的Demo、重力感應所要使用的類sensorsimulator-lib.jar以及模擬數據的sensorsimulator.jar文件。
其次,將Samples文件夾下的SensorDemo工程拷貝出來,放到你經常創建Android工程的地方,便於導入工程;在Eclipse的開發區,單擊右鍵,選擇Import,找到剛剛放置的SensorDemo工程,如果工程出現問題,檢查工程文件是否完整,如在Eclipse的開發區沒有看到「Android2.1」的版本文件(導入工程中常見的問題),則選擇BuildPath→Configure Build Path,切換到Android選項卡,勾選相應的Android版本號,並點擊OK即可,此步驟完成了SensorDemo測試工程的導入。
再次,將下載文件bin文件夾下的SensorSimulatorSettings.apk安裝到模擬器中,相當於接收端(或者客戶端,而此時sensorsimulator.jar即為服務端,控制客戶端的一切行動),並打開,看到有IP地址框和埠號框,此時打開下載文件夾下bin文件夾下的sensorsimulator.jar(很多裝了解壓縮文件的同學會發現,打開時默認的使用的是解壓縮文件打開,會看到文件的內部,根本達不到模擬數據的作用),此時使用的是Java自帶的jar文件的運行方式:javaw命令,打開控制台(Win + R),輸入cmd回車,輸入javaw -jar path(path為你的sensorsimulator.jar所在的位置),並回車,然後就可以看到如下的界面,即打開了數據的模擬窗口
可以看到Possible IP addresses選項,將IP(圖上為:192.168.4.165)填寫到Android模擬器中剛打開的程序SensorSimulatorSettings中,其默認圖標為:,填寫完成後,點擊右側選項卡「Testing」,選擇Connect,即可看到SensorSimulator下側框已連接,此時運行SensorDemo的工程,即可在數據模擬端通過移動滑塊控制右側的數據了。

熱點內容
廣東江門首選dns伺服器地址 發布:2025-02-12 10:56:55 瀏覽:954
台灣大量IP伺服器 發布:2025-02-12 10:51:43 瀏覽:375
sship訪問伺服器 發布:2025-02-12 10:50:16 瀏覽:98
人機局腳本 發布:2025-02-12 10:48:03 瀏覽:66
安卓哪裡可以下2k17 發布:2025-02-12 10:45:36 瀏覽:317
m1二級緩存才4m 發布:2025-02-12 10:36:43 瀏覽:177
編譯器一直返回error 發布:2025-02-12 10:25:27 瀏覽:556
電腦怎麼玩b站伺服器 發布:2025-02-12 10:23:21 瀏覽:671
安卓手機怎麼上p站 發布:2025-02-12 10:21:54 瀏覽:838
bat當前時間文件夾 發布:2025-02-12 10:18:24 瀏覽:315