我意识到GDK还没有发布,但我已经开始尝试将Google放在Glass上,因为谷歌鼓励(https://developers.google.com/glass/gdk)。我写了一个非常简单的慢跑应用程序,用于计算LocationManager的距离和速度。有没有人知道这应该或不应该与Glass本身一起工作(即无需与手机配对)?通过阅读玻璃拆解,它看起来像是内置GPS芯片。我遇到了从Glass获取GPS的问题,我感觉它目前受到限制。
答案 0 :(得分:1)
是的,但诀窍是你需要使用requestLocationUpdates()而不是getLastKnownLocation()。这就是让我失望的部分,因为如果我刚刚获得了getLastKnownLocation(),我最终会得到空值。
所以使用Compass示例作为基础(以避免其他潜在的问题和努力),如果你有正确的运行,这是一个非常基本的黑客扩展它并添加位置更新:
如果你像我一样使用Android Studio,并遇到“未引用的符号”错误(比如我),并且懒得以不同的方式解决它(我认为你看到了趋势...) ,提前定义一些事情:
private LocationManager mLocationManager;
private LocationListener mLocationListener;
private Criteria criteria;
更新onKeyDown()方法
...
String directionName = mSpokenDirections[getDirectionIndex(heading)];
String headingText = String.format(speechFormat, (int) heading, directionName);
// **** Location hack starts here... ****
criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
provider = mLocationManager.getBestProvider(criteria, true);
boolean isEnabled = mLocationManager.isProviderEnabled(provider);
if (isEnabled) {
headingText += " and GPS is enabled on provider " + provider;
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
makeUseOfNewLocation(location);
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
// Register the listener with the Location Manager to receive location updates
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0, locationListener);
} else {
headingText = ", but GPS not enabled on provider " + provider;
}
// **** Location hack ends here ****
mSpeech.speak(headingText, TextToSpeech.QUEUE_FLUSH, null);
return true;
...
这里只是添加文档中的LocationListener代码段:http://developer.android.com/guide/topics/location/strategies.html,并添加一些条件。您可以在提供商中进行硬编码,但我想使用Glass报告的任何“最佳”,因此它(希望)适应不同的场景(尚未验证,所以这只是目前的希望)。 / p>
添加一个简单的makeUseOfLocation()方法来说明细节:
public void makeUseOfNewLocation(Location location) {
if (location != null) {
String lat = "Latitude: " + location.getLatitude();
String lng = ", Longitude: " + location.getLongitude();
String summary = lat + lng;
mSpeech.speak(summary, TextToSpeech.QUEUE_FLUSH, null);
}
return;
}
通过这种方式,你可以四处闲逛并听到它的想法。我在这座建筑物周围徘徊,只是因为它的存在。
为清单添加适当的权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
构建并运行...我尝试使用和不使用Glass(XE9更新)配对我的手机,所有内容似乎都按预期运行。