谷歌眼鏡GDK開發指南之地理位置和傳感器

原文鏈接:http://bbs.seacat.cn/thread-902-1-1.html




你可以通過Android平臺的標準APIs來訪問地理位置和傳感器的數據.

地理位置

在Glass上調用Android平臺的標準APIs,通過下面的Android SDK的類來獲取地理位置信息:

1、LocationManager – 用來訪問Android地理位置系統服務

2、LocationProvider – 基於特定的criteria來提供位置信息。Glass提供特殊的遠程providers,可以用來獲取安裝了MyGlass App的配對設備的地理位置信息。

3、Criteria – 可以創建一個criteria的集合,用來選取最佳的 LocationProvider


爲了獲取地理位置信息,你需要使用LocationManager 類來從一個或多個location providers中獲取數據。


在Android設備上的程序獲取地理位置信息是通過GPS和網絡。可是在Glass上,有效的 location providers集合是動態的,並且可能包含來自其他數據源的遠程location providers,例如安裝了MyGlass App的藍牙配對設備。爲了處理這些附加的providers,應該監聽多個providers的位置信息的更新。


注意:不要使用 LocationManager.getBestProvider()方法或 GPS_PROVIDER 和 NETWORK_PROVIDER 常量來監聽地理位置的更新。Glass使用動態的
providers集合,只監聽單個provider會造成位置更新的丟失。


從所有有效的location providers獲取數據:




1、創建一個Criteria 對象
2、調用 getProviders()方法獲取可用的providers列表
3、遍歷providers列表並請求更新。這樣能確保你能接收到遠程providers的更新。



  1. LocationManager locationManager; // initialized elsewhere

  2. // This example requests fine accuracy and requires altitude, but

  3. // these criteria could be whatever you want.

  4. Criteria criteria = new Criteria();  

  5. criteria.setAccuracy(Criteria.ACCURACY_FINE);  

  6. criteria.setAltitudeRequired(true);  

  7. List<String> providers = locationManager.getProviders(  

  8.        criteria, true/* enabledOnly */);  

  9. for (String provider : providers) {  

  10.    locationManager.requestLocationUpdates(provider, minTime,  

  11.            minDistance, listener);  

  12. }  





傳感器


Glass支持一下傳感器:


TYPE_ACCELEROMETER(加速計)
TYPE_GRAVITY (重力)
TYPE_GYROSCOPE (陀螺儀)
TYPE_LIGHT (光線)
TYPE_LINEAR_ACCELERATION (線性加速計)
TYPE_MAGNETIC_FIELD (磁場)
TYPE_ORIENTATION (方向 被棄用)
TYPE_ROTATION_VECTOR (旋轉角度)
不支持以下傳感器:




TYPE_AMBIENT_TEMPERATURE (環境溫度)
TYPE_PRESSURE (壓力)
TYPE_PROXIMITY (距離)
TYPE_RELATIVE_HUMIDITY (相對溼度)
TYPE_TEMPERATURE (溫度)






對於在Glass上使用傳感器還有些小提示:




1、Glass傳感器協調系統是相對於顯示屏的。




104208gje1gqrjymnzzaag.png




2、爲了保持電池壽命,只有在你需要的時候才需要監聽傳感器。如果你的Glassware使用一個服務來渲染動態卡片,且你只有在活動卡片可見的時候才需要傳感器,使用動態卡片的surface回調方法來啓動或停止對傳感器的監聽,


3、傳感器回調時間運行在UI主線程,所以要儘快的處理事件並返回。如果你的處理任務很耗時,可以考慮將傳感器事件插入到一個隊列中,使用後臺線程來處理他們。


4、爲了跟蹤頭部運動,50hz的採樣率足夠了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章