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

活动识别API不可靠?

师赤岩
2023-03-14

我试图在项目中使用活动识别来检测用户何时“在车内”。(驾驶)问题是几乎不可能使用它,因为大多数可能的活动经常报告“车内”,即使我已经在办公桌前坐了很长时间,或者只是在家里走来走去。很高兴知道API是如何得出这一结论的。

我认为这个功能有很大的潜力,但现在有些东西显然不起作用。

这是一份每30秒进行一次的最有可能的活动日志,以显示我的意思。坐在办公桌前,4分钟后,我把电话转了几次,结果是“最有可能的车内”结果。

我试过不同的手机,结果是一样的。所以我认为这与硬件无关。

DetectedActivity [type=STILL, confidence=43]
DetectedActivity [type=STILL, confidence=54]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=69]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=92]
DetectedActivity [type=TILTING, confidence=100]
DetectedActivity [type=IN_VEHICLE, confidence=49]
DetectedActivity [type=TILTING, confidence=100]
DetectedActivity [type=STILL, confidence=51]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=85]
DetectedActivity [type=STILL, confidence=100]
DetectedActivity [type=STILL, confidence=66]
DetectedActivity [type=STILL, confidence=100]

这是代码,没有什么特别的:

public class ActivitiesIntentService extends IntentService {


    private static final String TAG = "ActivitiesIntentService";


    public ActivitiesIntentService() {
        super(TAG);
    }

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


        DetectedActivity mostProbableActivity = result.getMostProbableActivity();


        i.putExtra("MOST_PROBABLE_ACTIVITY",mostProbableActivity);



        LocalBroadcastManager.getInstance(this).sendBroadcast(i);


        Log.e(TAG, String.valueOf(mostProbableActivity));
        }

}

从这个链接:

活动识别API

我可以看到其他人也有类似的经验,但有些人声称效果不错。

我认为这是应用编程接口置信度算法中的一个错误。很容易得出结论,手机没有朝任何方向移动,也没有在车辆中明显“最有可能”的道路上移动。

有人能确认这个问题吗还是我用错了?

顺致敬意,

托马斯

共有2个答案

严琨
2023-03-14

如果您需要更准确的读数,您应该提高设备的检测水平,但这反过来又会耗尽您的电池。就您的结果响应而言,要确保您的用户正在执行某项活动,Google Play服务的信心必须是

if(DetectedActivity == “In_Vehicle” && result.getConfidence()> 75)
 {
 // output = User is Driving;
 // Perform task 
 }

在不耗尽电池的情况下获得有关用户活动和位置的更准确见解的其他方法是尝试一些API,如tranql、Context Hub或Neura

赵晟睿
2023-03-14

请记住,这是一项非常低能耗的服务,因此它不能经常查看设备传感器。这会使电池电量过快耗尽,无法发挥作用。请务必阅读文档以了解约束条件。

如果您想要更准确的读数,请增加检测间隔。这将为it部门提供更多的数据。

还要记住,这些测量是广泛进行的。一个可能的用例是估计设备的运营商进行体力活动的时间,或者激活和停用当运营商进行检测到的活动之一时应该运行的应用程序组件。

 类似资料:
  • 在最近的Google Play服务更新中,有人对活动识别API有问题吗? 我已经在一个应用程序中实现了它。在5.0更新之前,它工作得非常好。现在,当用户走路或坐着不动时,它会在车内返回:/ 并且根本不返回、或。 我应该知道的活动识别API是否有任何更改? 如果你需要更多的细节,请告诉我。

  • 我将使用google play services活动识别api编写一个应用程序。android开发者网站上的培训是直接进行的,但在过去的几个小时里,我编写了一个简单的应用程序,但没有得到任何结果。更新:实际上,我将在5秒钟的时间间隔内以toast消息的形式显示用户的当前活动(如ActivityRecognitionService-Intent服务中的OnIntentHandler方法所示)。我认为

  • 我正在制作一个应用程序,使用ActivityRecognition API跟踪用户在后台的活动,如果用户在指定的时间段(例如1小时)内保持在同一位置,则系统会推送通知,告诉用户散步。我已经实现了活动识别,但仅适用于打开应用程序的情况。显然,Google API客户端需要保持连接才能发送活动更新。我的问题是-对于后台活动跟踪,什么是更好的解决方案: 1)在主活动(或单独活动)中实现警报管理器,该活动

  • 我试图使用谷歌活动识别API,只在活动发生变化时或大约每30分钟(如果活动没有变化,则为10分钟或更长时间)获取结果。相反,当我调用下面的代码时,我经常在我的IntentService中获得活动识别结果,就像每分钟一样: 创建PendingContent对象的方法: 获取的方法: 我知道官方文件说: 如果另一个应用程序也以更快的速度请求活动更新,则接收活动的频率可能会高于detectionInte

  • 我正在开发android原生应用程序。我的要求是获取设备的当前活动,如运行,in_vehicle,静止等等。我使用Activity识别API并设置了通过IntentService接收活动更改的挂起意图。我给每个更新5秒的间隔。它未能在某段时间内提供活动更改并再次开始提供活动。之后我更喜欢Awareness SnapshotAPI来获取活动状态。它也是同样的结果,未能定期提供活动。两个API有时提供

  • 我正在处理活动识别API,试图使其在后台运行。因此,我创建了一个连接到Play Services的服务,并且一直处于活动状态。当服务被销毁并重新创建时,我要干杯了。问题是,一段时间后,即使服务正在运行,它也会停止检测活动。 下面是该服务的一些代码。 我还覆盖了onConnectionSuspend 这段代码正常工作了一段时间,然后突然停止了。有人知道为什么吗? 谢谢。