GoogleApiClient и проблема с обнаружением активности: действия не обнаруживаются в течение равных периодов - PullRequest
0 голосов
/ 24 февраля 2019

Я хочу обнаружить действия по GoogleApiClient.но я не могу сделать это за одинаковые периоды.Я использую этот код в методе onCreate для обнаружения действий.например, первый журнал происходит в 7: 7 ", второй в 8: 1" и третий в 12: 14 ".

mApiClient = new GoogleApiClient.Builder(this)
            .addApi(ActivityRecognition.API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();

    mApiClient.connect();

onConnected метод:

@Override
public void onConnected( Bundle bundle) {

    Intent intent = new Intent( this, ActivityRecognizedService.class );
    PendingIntent pendingIntent = PendingIntent.getService( this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT );
    ActivityRecognitionClient activityRecognitionClient = ActivityRecognition.getClient(this);
    Task task = activityRecognitionClient.requestActivityUpdates(0, pendingIntent);

}

наконец класс ActivityRecognizedService:

public class ActivityRecognizedService extends IntentService {
public ActivityRecognizedService() {
    super("ActivityRecognizedService");
}

public ActivityRecognizedService(String name) {
    super(name);
}
@Override
protected void onHandleIntent(Intent intent) {
    if(ActivityRecognitionResult.hasResult(intent)) {
        ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);
        handleDetectedActivities( result.getProbableActivities() );
    }
}

private void handleDetectedActivities(List<DetectedActivity> probableActivities) {
    for( DetectedActivity activity : probableActivities ) {
        Log.e( "ActivityRecogition", "detected activity in service "+ activity.toString());
        switch( activity.getType() ) {
            case DetectedActivity.IN_VEHICLE: {
                Log.e( "ActivityRecogition", "In Vehicle: " + activity.getConfidence() );
                break;
            }
            case ...
        }
    }
}
  1. Как я могу ограничить обнаружение определенным периодом времени?
  2. Как я могу заставить обнаружение активности в определенные периоды?

Благодаря этому коду все стало намного лучше.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Но я хочу еще один способ сделать это ...

...