Ожидающее намерение не запускает службу - PullRequest
1 голос
/ 16 июня 2019

Я пытаюсь использовать API перехода для обнаружения активности пользователя, поэтому я определил ожидающее намерение и создал службу для его запуска, но она просто не запускается.Кроме того, я не знаю, имеет ли это большое значение, но в любом случае служба должна обмениваться данными с сервером, который я построил, как только он обнаруживает, что устройство работает, но если я отлаживаю программу с точками останова, она просто выглядит так, как будто это не так.даже войти в службу.

Служба запустилась только тогда, когда я написал строку pendingIntent.send(), но в любом случае это мне не помогло, поскольку намерение все равно не получало никаких данных.

Метод onCreate, в котором также определяется намерение:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_running);

    // Go fullscreen
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    mContext = this;
    activityRecognitionClient = ActivityRecognition.getClient(mContext);

    Intent intent = new Intent(this, TransitionIntentService.class);

    pendingIntent = PendingIntent.getService(this, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    configureSettingsButton();
}

Сборка обнаружения активности:

public void registerHandler(final View view) {
    transitions = new ArrayList<>();

    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.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.WALKING)
            .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.RUNNING)
            .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER)
            .build());

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


    ActivityTransitionRequest activityTransitionRequest = new ActivityTransitionRequest(transitions);

    Task<Void> task = activityRecognitionClient.requestActivityTransitionUpdates(activityTransitionRequest, pendingIntent);

    task.addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            textView = findViewById(R.id.textView4);
            scan = findViewById(R.id.startSearching);
            textView.setVisibility(View.VISIBLE);
            scan.setVisibility(View.INVISIBLE);
            Toast.makeText(mContext, "Started scanning", Toast.LENGTH_LONG).show();
        }
    });

    task.addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Toast.makeText(mContext, "Failed to build transition object", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
    });

}

Сама служба:

public class TransitionIntentService extends IntentService {

String answer;
//boolean gotMatch = false;
boolean stopScanning = false;

public void onCreate() {
    super.onCreate();
    Log.d("TransitionIntentService", ">>>onCreate()");
}

public TransitionIntentService() {
    super("TransitionIntentService");
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, startId, startId);
    Log.i("LocalService", "Received start id " + startId + ": " + intent);

    return START_STICKY;
}

@Override
protected void onHandleIntent(Intent intent) {
    if (null != intent) {
        if (ActivityTransitionResult.hasResult(intent)) {
            ActivityTransitionResult result = ActivityTransitionResult.extractResult(intent);
            for (ActivityTransitionEvent event : result.getTransitionEvents()) {

                if(event.getActivityType() == 3) //user is still
                {
                    if(event.getTransitionType() == 0) //the user has entered a still state
                    {
                        SendDriving sendDriving = new SendDriving();
                        sendDriving.start();

                        while (sendDriving.isAlive()){}

                        GetMatch getMatch = new GetMatch();
                        getMatch.start();
                    }
                    else if (event.getTransitionType() == 1) //the user has left the still state
                    {
                        stopScanning = true;

                        SendDrivingEnd sendDrivingEnd = new SendDrivingEnd();
                        sendDrivingEnd.start();
                    }
                }


            }
        }
    }
}

Заранее спасибо!

Редактировать: мой файл манифеста:

<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:ignore="GoogleAppIndexingWarning">
    <activity android:name=".profile" />
    <activity android:name=".settingInterests" />
    <activity android:name=".languages" />
    <activity android:name=".settings" />
    <activity android:name=".Login" />

    <service android:name=".TransitionIntentService"></service>

    <activity android:name=".running" />
    <activity android:name=".SignupPage2" />
    <activity android:name=".SignupPage1" />
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...