当前位置: 首页 > 知识库问答 >
问题:

如何让任务调用pendingIntent

潘安平
2023-03-14

作为任务的一部分,我一直在尝试将PendingEvent传递给Activity Recognition客户端,但似乎没有调用PendingEvent。

我正在使用谷歌的活动识别客户端(https://developers.google.com/android/reference/com/google/android/gms/location/ActivityRecognitionClient). 我已经查看了示例代码(在这里可以找到:https://github.com/googlesamples/android-play-location/blob/master/ActivityRecognition/app/src/main/java/com/google/android/gms/location/sample/activityrecognition/MainActivity.java)但似乎看不到我的问题。

我的代码如下所示(我提取了类的一些部分以使其更易于阅读):


public class SignIn extends AppCompatActivity {

    private ActivityRecognitionClient mActivityRecognitionClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.sign_in);

        mActivityRecognitionClient = new ActivityRecognitionClient(this);

        Task<Void> task = mActivityRecognitionClient.requestActivityUpdates(1000L, getActivityDetectionPendingIntent());

        task.addOnSuccessListener(result -> Log.i("test", "test"));
        task.addOnFailureListener(e -> Log.e("test", e.toString()));
    }

    private PendingIntent getActivityDetectionPendingIntent() {
        Intent intent = new Intent(this, DetectedActivitiesIntentService.class);

        return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    }

package com.example.kangaroute;

import android.app.IntentService;
import android.content.Intent;
import android.util.Log;

import com.google.android.gms.location.ActivityRecognitionResult;
import com.google.android.gms.location.DetectedActivity;

import java.util.ArrayList;

class DetectedActivitiesIntentService extends IntentService {

    protected static final String TAG = "DetectedActivity";

    public DetectedActivitiesIntentService(){
        super(TAG);
    }

    @Override
    public void onCreate(){
        Log.i("test", "works");
        super.onCreate();
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);

        // Get the list of the probable activities associated with the current state of the
        // device. Each activity is associated with a confidence level, which is an int between
        // 0 and 100.
        ArrayList<DetectedActivity> detectedActivities = (ArrayList) result.getProbableActivities();

        for (DetectedActivity activity : detectedActivities){
            Log.i(TAG, activity.toString());
        }

    }
}

当我运行代码时,我希望看到“works”被打印到Logcat,因为我是从DetectedActivitiesIntentService类中的onCreate()方法记录它的。然而,我什么也没看到。

但是,“测试”是从与任务关联的OnSuccessListener记录的。当我记录结果时,没有任何结果。。。

共有1个答案

冯宪
2023-03-14

哈哈,猜猜是谁忘了写“public class”,而只写了“class”。解决了!

 类似资料:
  • 我有代码: 年级4.5.1对此警告为 但是link没有给我任何可以替换它的提示,因为我不能仅仅设置任务依赖项,比如dependsOn或FinalizdBy--它不是从其他任务调用的,而是从构建的末尾调用的。

  • 我正在将一些用于iOS和OSX的Ant构建转换为Gradle。创建了以下内容: 这可能很简单,但我做错了什么?如何从自定义类中调用exec任务?

  • 问题内容: 现在我想在进入for循环之前集中所有任务,但是当我运行此程序时,for循环会在此之前执行并引发此异常: 问题答案: 一种工作方式是,当您调用它时,它等待所有任务完成: 执行给定的任务,并在所有任务完成时返回保存其状态和结果的期货列表。Future.isDone()对于返回列表的每个元素为true。 请注意,已完成的任务可能已正常终止或引发了异常而终止 。如果在进行此操作时修改了给定的集

  • 问题内容: 我在另一个构建工具的情况下使用Maven(leiningen为Clojure的,但是这不应该事),我想知道我会怎么称呼像一个插件的依赖:集结类路径编程(即通过Maven- API,而不是通过-command)。 问题答案: 请参阅如何从maven-plugin-testing- harness实现org.apache.maven.plugin.testing.AbstractMojoT

  • 我正在开发一个应用程序,需要在ViewController之间切换,但在多任务处理时不会丢失当前数据! 我的问题: 有一种方法可以获得类似UtiAbbarController的东西,但是通过菜单可以获得动画(多任务)?