gpt4 book ai didi

android - 更新到 GooglePlayServices 26.0.2 后,ActivityDetectionBroadcastReceiver 无法编译

转载 作者:行者123 更新时间:2023-11-29 01:06:53 25 4
gpt4 key购买 nike

这是我的 onReceive 函数:

    @Override
public void onReceive(Context context, Intent intent) {
ArrayList<DetectedActivity> updatedActivities =
intent.getParcelableArrayListExtra(Constants.ACTIVITY_EXTRA);
int type = 0x0;
Integer confidence = 0;
Collections.sort(updatedActivities, new Comparator<DetectedActivity>() {
@Override
public int compare(DetectedActivity lhs, DetectedActivity rhs) {
if(lhs.getConfidence() > rhs.getConfidence()){
return -1;
}else if(lhs.getConfidence() > rhs.getConfidence()){
return 1;
}
return 0;
}
});
String rawData = "(";
for (DetectedActivity detectedActivity : updatedActivities){
if(detectedActivity.getConfidence() >= 25){
if(type==PSMotionService.unknown || type==PSMotionService.stationary) {
rawData += detectedActivity.getType() + ":" + detectedActivity.getConfidence() + ",";
Log.i("", "autopilot type detected activity: " + detectedActivity);
if (confidence < detectedActivity.getConfidence()) {
confidence = detectedActivity.getConfidence();
}
if (detectedActivity.getType() == DetectedActivity.STILL) {
type |= PSMotionService.stationary;
} else if (detectedActivity.getType() == DetectedActivity.IN_VEHICLE) {
type |= PSMotionService.automotive;
} else if (detectedActivity.getType() == DetectedActivity.ON_BICYCLE) {
type |= PSMotionService.bicycling;
} else if (detectedActivity.getType() == DetectedActivity.ON_FOOT || detectedActivity.getType() == DetectedActivity.WALKING) {
type |= PSMotionService.walking;
} else if (detectedActivity.getType() == DetectedActivity.RUNNING) {
type |= PSMotionService.running;
} else if (detectedActivity.getType() == DetectedActivity.UNKNOWN) {
type |= PSMotionService.unknown;
}
}
}
}
rawData += ")";
Long timestamp = System.currentTimeMillis()/1000;
Integer confidenceFlag = 0;
if(confidence >= 25 && confidence < 75){
confidenceFlag = 1;
}else if(confidence >=75){
confidenceFlag = 2;
}
Log.i("", "autopilot type is:" + type + "... timestamp: " + timestamp + "....confidence" + confidence + "...confidenceFlag:" + confidenceFlag);
Log.i("", "autopilot-----------------------------------------------END");
Motion activity = new Motion(timestamp, type, confidenceFlag);
Utils.appendLog("NEW MOTION: [" + activity.getTimestamp() + ", " + activity.getType() + ", " + activity.getConfidence() + "]" + rawData, "D", Constants.TRACKER);
if(PSTrip.getActiveTrip() != null){
PSMotionService.getInstance(context).motionsTrip.add(activity);
Log.i("", "autopilot added to trip: size is:" + PSMotionService.getInstance(context).motionsTrip.size());
if(PSApplicationClass.getInstance().pref.getGeoEnabled(context)) {
appendMotionActivity(context, type, activity);
}
}else{
Log.i("", "autopilot test to add to buffer");
appendMotionActivity(context, type, activity);
}
Log.i("", "autopilot-----------------------------------------------END AAAAALLLLLLL");
}

我会像这样从 Intent 中提取 DetectedActivity 列表:

        ArrayList<DetectedActivity> updatedActivities =
intent.getParcelableArrayListExtra(Constants.ACTIVITY_EXTRA);

但现在我遇到了这个问题:

/Users/alinrosu/Workspace/passenger-android/passenger/src/main/java/nl/hgrams/passenger/listeners/ActivityDetectionBroadcastReceiver.java
Error:(31, 51) error: incompatible types: inferred type does not conform to upper bound(s)
inferred: DetectedActivity
upper bound(s): Parcelable
Error:Execution failed for task ':passenger:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

如何在不出现此问题的情况下提取 DetectedActivity 列表?

最佳答案

问题是您正在使用 Java 8 的语言级别设置,这加强了对自动转换的一些限制,而这些限制在 Java 7 及更低版本中是可以的。参见 Why does this Java 8 program not compile?了解更多详情。

我没有什么东西可以用来测试它,所以我不能确定这是否有效,但你可以先尝试转换它:

ArrayList<DetectedActivity> updatedActivities = 
(ArrayList<DetectedActivity>)intent.getParcelableArrayListExtra(Constants.ACTIVITY_EXTRA);

如果这不起作用,请这样做:

ArrayList<Parcelable> updatedActivities = intent.getParcelableArrayListExtra(Constants.ACTIVITY_EXTRA);

现在,当您使用数组时,您需要强制转换每个元素,如下所示:

for (Parcelable p : updatedActivities) {
// cast to correct type
DetectedActivity detectedActivity = (DetectedActivity)p;
// do whatever with "detectedActivity"...
}

关于android - 更新到 GooglePlayServices 26.0.2 后,ActivityDetectionBroadcastReceiver 无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46283480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com