我正在开发android本机应用程序。我的要求是获得设备的当前活动,如运行,in_vehicle,静止等等。我使用了ActivityRecognitionAPI并将pendingintent设置为通过IntentService接收活动更改。我给了每个更新的5秒间隔。它未能在一段时间内提供活动变化,并再次开始提供活动。之后,我首选Awareness SnapshotAPI以获取活动状态。它也是同样的结果,没有定期提供活动。这两种API有时都提供,很多时候不提供。我使用GooglePlayServices 10.2.0版本进行开发。任何人都知道这些东西和解决方案的原因是什么,以获得定期的活动更新..Android活动识别问题
在此先感谢。
我想显示我的应用程序用户的活动,如他正在散步,跑步等。这是我的要求。
方法1:使用ActivityRecognition.API
Intent intent = new Intent(mContext, RequestActivityService.class);
PendingIntent callbackIntent = PendingIntent.getService(mContext, 111,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(googleApiClient,5000, callbackIntent);
public class RequestActivityService extends IntentService {
public RequestActivityService() {
super("RequestActivityService");
}
@Override
protected void onHandleIntent(Intent intent) {
if (ActivityRecognitionResult.hasResult(intent)) {
ActivityRecognitionResult result = ActivityRecognitionResult
.extractResult(intent);
DetectedActivity mostProbableActivity = result
.getMostProbableActivity();
int confidence = mostProbableActivity.getConfidence();
int activityType = mostProbableActivity.getType();
String activityName = getNameFromType(activityType);
}
}
**
//谷歌API客户端我尝试这样的方式来获得活动更新。它开始提供活动信息,但Intent服务有时不被调用,并且再次开始启动该意图。所以我无法显示正确的活动信息。
方式2:使用Awareness.API
Awareness.SnapshotApi.getDetectedActivity(googleApiClient).
setResultCallback(new ResultCallback<DetectedActivityResult>() {
@Override
public void onResult(@NonNull DetectedActivityResult detectedActivityResult) {
if (!detectedActivityResult.getStatus().isSuccess()) {
Log.i("Could not get the activity","");
return;
}
ActivityRecognitionResult ar = detectedActivityResult.getActivityRecognitionResult();
DetectedActivity probableActivity = ar.getMostProbableActivity();
String activityType = RequestActivityService.getNameFromType(probableActivity.getType());
int activityConfidence = probableActivity.getConfidence();
}
});
//谷歌API客户端**我这个尝试另一种方法,使用这个API,我们可以递归调用此方法并经常收到活动信息。但它也有时提供,有时会检测到ActivityResult.getStatus()不成功。如果我试图获取状态码和状态消息,状态码返回15,状态消息将为空。
这两种方式都无法定期更新活动,而且我更多地使用GooglePlayService 10.2.0版本。我已经从Github测试了ActivityRecognition的GoogleSamples。这也是同样的结果。我不知道如何达到我的要求。希望你现在能理解我的需求和我所面对的事情。得到响应后
请更具体地说明您正在尝试做什么以及如何做?那么问题是什么。如果您包含代码,这将非常有用 –
我想显示我的应用用户的活动,如他正在散步,跑步等。这是我的要求。 –
因此,您正在讨论Android中由Google Fit而非Activity类表示的用户活动。对 ? –