可以通过以下代码片段解决:
// 创建回调接口,用于接收活动识别结果
private class ActivityDetectionBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 检查广播意图中是否包含活动
if (intent.getAction().equals("com.example.ACTIVITY_DETECTED")) {
int detectedActivityType = intent.getIntExtra("activityType", -1);
if (detectedActivityType == -1) {
// 如果活动种类是 -1(即未识别到活动),则忽略广播
return;
}
// 处理识别到的活动
handleDetectedActivity(detectedActivityType);
}
}
}
// 创建活动识别服务连接器
private GoogleApiClient buildGoogleApiClient() {
return new GoogleApiClient.Builder(this)
.addApi(ActivityRecognition.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
// 启动活动识别服务
private void startActivityRecognition() {
Intent intent = new Intent(this, ActivityDetectionBroadcastReceiver.class);
intent.setAction("com.example.ACTIVITY_DETECTED");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(mGoogleApiClient, 0, pendingIntent);
}
// 处理识别到的活动
private void handleDetectedActivity(int detectedActivityType) {
// ...
}
这个示例中,创建了一个 ActivityDetectionBroadcastReceiver
类,用于接收活动识别的广播。在 onReceive
方法中,判断广播意图中是否包含活动。如果活动种类是 -1(即未识别到活动),则忽略广播,否则调用 handleDetectedActivity
方法来处理识别到的活动。
然后,创建一个 GoogleApiClient
连接器,启动活动识别服务,并对识别到的