在我的onCreate
中,我调用以下函数来检测天气。
private void detectWeather() {
if( !checkLocationPermission() ) {
return;
}
Awareness.getSnapshotClient(this).getWeather()
.addOnSuccessListener(new OnSuccessListener<WeatherResponse>() {
@Override
public void onSuccess(WeatherResponse weatherResponse) {
Weather weather = weatherResponse.getWeather();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("Testing", "Could not get weather: " + e);
}
});
}
在我的Manifest文件中,我添加了以下元数据和权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<meta-data
android:name="com.google.android.awareness.API_KEY"
android:value="MYKEY"/>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="MYKEY"/>
在我的Gradle文件中,我添加了以下依赖项。
compile 'com.google.android.gms:play-services:+'
compile 'com.google.android.gms:play-services-gcm:+'
compile 'com.google.android.gms:play-services-location:+'
compile 'com.google.android.gms:play-services-awareness:+'
应用程序启动正常并进入感知API,但它会在日志中引发以下错误:com.google.android.gms.common.api.ApiException: 15
。我无法在文档中或Google / Stackoverflow上找到此错误的解释。我错过了一些明显的东西吗?
答案 0 :(得分:0)
对于将来的读者,Google Awareness API中已弃用天气和地点。
另一种选择是NumberEight SDK,它可以做的工作比“意识”还多(尽管在撰写本文时没有区域可用)。
它在iOS和Android上执行各种上下文识别任务,包括:
它还可以记录用户上下文,以便通过在线门户进行报告和分析。
要快速接收Java中的天气更新,请输入:
NumberEight ne = new NumberEight();
ne.onWeatherUpdated(
new NumberEight.SubscriptionCallback<NEWeather>() {
@Override
public void onUpdated(@NonNull Glimpse<NEWeather> glimpse) {
Log.d("CurrentWeather", glimpse.getMostProbable().toString());
}
});
披露:我是开发人员之一。