Java 如何检测用户开始或结束的任何活动?

Java 如何检测用户开始或结束的任何活动?,java,android,Java,Android,我正在构建一个获取用户位置的应用程序,如果客户开始跑步或驾驶等活动,我想通知他,我遵循以下指南: 我在找另一个我找到的向导 但还是没有成功 但它对我不起作用,这是我的相关代码 Intent intent = new Intent(this, DetecdActivity.class); transitionPendingIntent = PendingIntent.getService(this, 100, intent, PendingIntent.FLAG_UPDATE_C

我正在构建一个获取用户位置的应用程序,如果客户开始跑步或驾驶等活动,我想通知他,我遵循以下指南:

我在找另一个我找到的向导 但还是没有成功 但它对我不起作用,这是我的相关代码

    Intent intent = new Intent(this, DetecdActivity.class);
    transitionPendingIntent = PendingIntent.getService(this, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    List<ActivityTransition> transitions = new ArrayList<>();

    transitions.add(
            new ActivityTransition.Builder()
                    .setActivityType(DetectedActivity.IN_VEHICLE)
                    .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER)
                    .build());

    transitions.add(
            new ActivityTransition.Builder()
                    .setActivityType(DetectedActivity.IN_VEHICLE)
                    .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
                    .build());

    transitions.add(
            new ActivityTransition.Builder()
                    .setActivityType(DetectedActivity.STILL)
                    .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
                    .build());

    transitions.add(
            new ActivityTransition.Builder()
                    .setActivityType(DetectedActivity.ON_BICYCLE)
                    .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
                    .build());

    transitions.add(
            new ActivityTransition.Builder()
                    .setActivityType(DetectedActivity.WALKING)
                    .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
                    .build());

    ActivityTransitionRequest request = new ActivityTransitionRequest(transitions);
    Task<Void> task = ActivityRecognition.getClient(this)
            .requestActivityTransitionUpdates(request, transitionPendingIntent);

    task.addOnSuccessListener(
            new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void result) {
                    // Handle success
                }
            }
    );

    task.addOnFailureListener(
            new OnFailureListener() {
                @Override
                public void onFailure(Exception e) {
                    // Handle error
                }
            }
    );

//subclass
 public class DetecdActivity extends IntentService {

    public DetecdActivity(String name) {
        super(name);
    }

    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        if (ActivityTransitionResult.hasResult(intent)) {
            ActivityTransitionResult result = ActivityTransitionResult.extractResult(intent);
            for (ActivityTransitionEvent event : result.getTransitionEvents()) {
                // chronological sequence of events....
                Toast.makeText(getApplicationContext(), event.toString(), Toast.LENGTH_SHORT).show();
            }
        }
    }


//in the manifest

<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />

<service
        android:name=".MapsActivity$DetecdActivity"
        android:exported="false"/>
Intent Intent=新的Intent(这是detectivity.class);
TransitionPendingEvent=PendingEvent.getService(this,100,intent,PendingEvent.FLAG_UPDATE_CURRENT);
列表转换=新建ArrayList();
transitions.add(
新建ActivityTransition.Builder()
.setActivityType(车辆中检测到的活动)
.setActivityTransition(ActivityTransition.ACTIVITY\u TRANSITION\u回车)
.build());
transitions.add(
新建ActivityTransition.Builder()
.setActivityType(车辆中检测到的活动)
.setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
.build());
transitions.add(
新建ActivityTransition.Builder()
.setActivityType(DetectedActivity.STILL)
.setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
.build());
transitions.add(
新建ActivityTransition.Builder()
.setActivityType(检测到自行车上的活动)
.setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
.build());
transitions.add(
新建ActivityTransition.Builder()
.setActivityType(DetectedActivity.WALKING)
.setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
.build());
ActivityTransitionRequest=新ActivityTransitionRequest(转换);
Task Task=ActivityRecognition.getClient(此)
.RequestActivityTransitionUpdate(请求、TransitionPendingEvent);
task.addOnSuccessListener(
新OnSuccessListener(){
@凌驾
成功时公开作废(作废结果){
//成功
}
}
);
task.addOnFailureListener(
新的OnFailureListener(){
@凌驾
公共失效失效失效(例外e){
//处理错误
}
}
);
//子类
公共类检测能力扩展IntentService{
公共检测率(字符串名称){
超级(姓名);
}
@凌驾
受保护的无效onHandleIntent(@Nullable Intent){
if(ActivityTransitionResult.hasResult(intent)){
ActivityTransitionResult=ActivityTransitionResult.extractResult(意图);
for(ActivityTransitionEvent事件:result.getTransitionEvents()){
//事件的时间顺序。。。。
Toast.makeText(getApplicationContext(),event.toString(),Toast.LENGTH_SHORT).show();
}
}
}
//在舱单上

您到底面临什么问题?您是否正确设置了google play服务?google play服务根本不起作用的问题,您指的是设置google play服务?如果我有依赖,是的,我有