Как распознать текущую активность пользователя по услуге? - PullRequest
0 голосов
/ 02 февраля 2019

Я попытался создать службу для распознавания текущей активности пользователя.Но этот код всегда вылетает.gms.location.ActivityRecognitionResult.getMostProbableActivity () 'для ссылки на нулевой объект в com.always_in_beta.ecodrive.service.UserTrackService.detectActivity (UserTrackService.java:51) в com.always_in_beta.ecodrickervice.UTravice.Travice.Travice.java: 27)

Код:

public class UserTrackService extends Service {

    public Handler handler = null;
    public Runnable runnable = null;
    int count = 0;
    public Context context = this;
    public Intent intentt;

    @Override
    public void onCreate() {
        handler = new Handler();
        runnable = new Runnable() {
            public void run() {
                detectActivity();
            }
        };
        handler.postDelayed(runnable, 4000);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        Toast.makeText(context, "Service stopped", Toast.LENGTH_LONG).show();
    }

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

    public void detectActivity() {
        ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intentt);
        DetectedActivity activity = result.getMostProbableActivity();
        Toast.makeText(context, activity.toString(), Toast.LENGTH_SHORT).show();
        Log.d("tag_tag_tag", activity.toString());
    }
}

1 Ответ

0 голосов
/ 02 февраля 2019

ActivityRecognitionResult # extractResult (android.content.Intent)

Возвращает ActivityRecognitionResult или ноль, если намерение не содержит ActivityRecognitionResult.

Итак, согласно вашей трассировке стека нулевого указателя, это ожидается, потому что вы не можете запустить getMostProbableActivity() на null .

...