谷歌眼镜GDK开发指南之地理位置和传感器

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




你可以通过Android平台的标准APIs来访问地理位置和传感器的数据.

地理位置

在Glass上调用Android平台的标准APIs,通过下面的Android SDK的类来获取地理位置信息:

1、LocationManager �C 用来访问Android地理位置系统服务

2、LocationProvider �C 基于特定的criteria来提供位置信息。Glass提供特殊的远程providers,可以用来获取安装了MyGlass App的配对设备的地理位置信息。

3、Criteria �C 可以创建一个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的更新。



[java] view plain copy 在CODE上查看代码片 派生到我的代码片
  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的采样率足够了。


你可能感兴趣的:(android,传感器,数据源,谷歌,Criteria)