Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BroadCastReceiver未从ActivityRecognitionService接收_Java_Android_Service_Broadcastreceiver_Activity Recognition - Fatal编程技术网

Java BroadCastReceiver未从ActivityRecognitionService接收

Java BroadCastReceiver未从ActivityRecognitionService接收,java,android,service,broadcastreceiver,activity-recognition,Java,Android,Service,Broadcastreceiver,Activity Recognition,我正在尝试使用Service+BroadCastReceiver跟踪用户的活动 ActivityTrackingService.java public class ActivityTrackingService extends Service { private static final String TAG = "ActivityTracking"; public static ActivityTrackingService instance; public static boolean

我正在尝试使用Service+BroadCastReceiver跟踪用户的活动

ActivityTrackingService.java

public class ActivityTrackingService extends Service {

private static final String TAG = "ActivityTracking";

public static ActivityTrackingService instance;

public static boolean isStarted() {
    return instance != null;
}

public ActivityTrackingService() {
    super();
}

@Override
public void onCreate() {
    Log.d(TAG, "onCreate onCreate!");
    super.onCreate();

    instance = this;
}

@Override
public void onDestroy() {
    Log.d(TAG, "Updates stopped!");
    ActivityRecognition.getClient(this).removeActivityTransitionUpdates(activityPendingIntent);
    super.onDestroy();
}

private static List<ActivityTransition> transitions = new ArrayList<>();
private static PendingIntent activityPendingIntent;
private static ActivityTransitionRequest transitionRequest;

void initActivityTransition(){
    transitions.add(
            new ActivityTransition.Builder()
                    .setActivityType(DetectedActivity.IN_VEHICLE)
                    .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
                    .build());
    transitions.add(
            new ActivityTransition.Builder()
                    .setActivityType(DetectedActivity.IN_VEHICLE)
                    .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER)
                    .build());
    transitions.add(
            new ActivityTransition.Builder()
                    .setActivityType(DetectedActivity.WALKING)
                    .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT)
                    .build());
    transitions.add(
            new ActivityTransition.Builder()
                    .setActivityType(DetectedActivity.WALKING)
                    .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER)
                    .build());
    transitions.add(
            new ActivityTransition.Builder()
                    .setActivityType(DetectedActivity.STILL)
                    .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER)
                    .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_ENTER)

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

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

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


    Log.d(TAG,"initActivityTransition " + transitions.size());
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    initActivityTransition();
    ActivityTransitionRequest request = new ActivityTransitionRequest(transitions);
    Intent mintent = new Intent(this, ActivityTransitionBroadcastReceiver.class);
    mintent.setAction(ActivityTransitionBroadcastReceiver.INTENT_ACTION);

    activityPendingIntent = PendingIntent.getBroadcast(this, 0, mintent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    Task<Void> task = ActivityRecognition.getClient(this)
            .requestActivityTransitionUpdates(request, activityPendingIntent);
    task.addOnSuccessListener(command -> Log.i(TAG, "Successfully added transition updates listener"));
    return START_STICKY;
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}
}

AndroidManifest.xml

    <service android:name=".service.services.ActivityTrackingService"></service>
    <receiver android:name=".service.services.ActivityTransitionBroadcastReceiver"
        android:exported="false"
        android:permission="com.google.android.gms.permission.ACTIVITY_RECOGNITION">
        <intent-filter>
            <action android:name="package.ACTION_PROCESS_ACTIVITY_TRANSITIONS" />
        </intent-filter>
    </receiver>
服务本身已启动,并且ActivityRecognitionClient任务的SuccessListener已正确执行(请参阅日志输出)。然而,广播接收器从未收到任何东西。有什么建议吗

    <service android:name=".service.services.ActivityTrackingService"></service>
    <receiver android:name=".service.services.ActivityTransitionBroadcastReceiver"
        android:exported="false"
        android:permission="com.google.android.gms.permission.ACTIVITY_RECOGNITION">
        <intent-filter>
            <action android:name="package.ACTION_PROCESS_ACTIVITY_TRANSITIONS" />
        </intent-filter>
    </receiver>
2020-02-26 16:38:06.503 29363-29363/package D/ActivityTracking: onCreate onCreate!
2020-02-26 16:38:06.510 29363-29363/package D/ActivityTracking: initActivityTransition 10
2020-02-26 16:38:07.014 29363-29363/package I/ActivityTracking: Successfully added transition updates listener