Android游戲開(kāi)發(fā)之十二:淺談Sensor重力感應(yīng)
Android系統(tǒng)提供的感應(yīng)器主要包含在android.hardware中,可以看到有 android.hardware.SensorEventListener、Sensor和SensorManager這三個(gè)類(lèi),而我們發(fā)現(xiàn)它們能做的 除了能夠獲取感應(yīng)器的信息和一些原始數(shù)據(jù)外,并沒(méi)有提供相關(guān)的邏輯處理。本教程后面將詳細(xì)介紹不同感應(yīng)器的作用和邏輯處理,例如晃動(dòng)、磁極、旋轉(zhuǎn)速度或自 由落體。
很多Android手機(jī)可能沒(méi)有配備軌跡球或?qū)Ш芥I的方向控制,所以重力感應(yīng)器是這類(lèi)實(shí)時(shí)性較強(qiáng)游戲的首選控制方式。對(duì)于Sensor感應(yīng)器主要有以下幾點(diǎn)問(wèn)題:
1. 降噪處理。
如果做過(guò)LBS軟件的大家可能明白偏移修正,在GPS無(wú)法正常獲取數(shù)據(jù)較間斷時(shí)地圖不能亂飄,這里Sensor也不例外,除了使用采樣數(shù)據(jù)平均值獲取外,可以間隔采樣的方法來(lái)處理。細(xì)節(jié)的算法我們將在下節(jié)給出示例代碼。
2. Sensor感應(yīng)器的敏感度。
在Android中提供了四種延遲級(jí)別分別為:
SENSOR_DELAY_FASTEST:最低延遲,一般不是特別敏感的處理不推薦使用,該種模式可能造成手機(jī)電力大量消耗,由于傳遞的為原始數(shù)據(jù),算法不處理好將會(huì)影響游戲邏輯和UI的性能,所以Android開(kāi)發(fā)網(wǎng)不推薦大家使用。
SENSOR_DELAY_GAME:游戲延遲,一般絕大多數(shù)的實(shí)時(shí)性較高的游戲都使用該級(jí)別
int SENSOR_DELAY_NORMAL:標(biāo)準(zhǔn)延遲,對(duì)于一般的益智類(lèi)或EASY級(jí)別的游戲可以使用,但過(guò)低的采樣率可能對(duì)一些賽車(chē)類(lèi)游戲有跳幀現(xiàn)象。
int SENSOR_DELAY_UI:用戶界面延遲,一般對(duì)于屏幕方向自動(dòng)旋轉(zhuǎn)使用,相對(duì)節(jié)省電能和邏輯處理,一般游戲開(kāi)發(fā)中我們不使用。