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服务?如果我有依赖,是的,我有