gpt4 book ai didi

android - ActivityRecognition API 一段时间后不发送 Action

转载 作者:搜寻专家 更新时间:2023-11-01 08:39:41 24 4
gpt4 key购买 nike

我有一个使用 ActivityRecognition 的 DetectedActivities 的广播接收器。我注意到它确实连接了,但我没有收到任何数据。这是在三星 Note 2 上。在我试过的其他手机上它总是有效。这是连接到 google api 的代码:

  public synchronized void buildGoogleApiClient() {
if(PSLocationCenter.getInstance().pref.getAutoPilot(context) || (PSTripDBFactory.getInstance(context).getActiveTrip()!= null)){
Log.i("","autopilot, will activate");
if(mGoogleApiClient == null || !mGoogleApiClient.isConnected()) {
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(ActivityRecognition.API)
.build();
Log.i("", "autopilot build google api client");
mGoogleApiClient.connect();
Log.i("", "autopilot register receiver");
LocalBroadcastManager.getInstance(context).registerReceiver(mBroadcastReceiver,
new IntentFilter(Constants.BROADCAST_ACTION));
}else{
Log.i("", "autopilot is already connected");
if(!PSLocationCenter.getInstance().pref.getMotionDetection(context)){
requestActivityUpdatesButtonHandler();
}
if(PSTripDBFactory.getInstance(context).getActiveTrip()== null) {
PSLocationCenter.getInstance().requestLocationUpdatesFromMotion();
}
}
}else{
if(mGoogleApiClient != null && mGoogleApiClient.isConnected()){
removeActivityUpdatesButtonHandler();
}
Log.i("","autopilot, will NOOOT activate");
}
}

这是请求动议的代码:

  public void requestActivityUpdatesButtonHandler() {
Log.i("", "autopilot request activity update");
Utils.appendLog("AUTOPILOT requestActivityUpdatesButtonHandler", false);
if(mGoogleApiClient != null && mGoogleApiClient.isConnected()){
Log.i("","AUTOPILOT requestActivityUpdatesButtonHandler GOOGLE API CLIENT CONNECTED");
Utils.appendLog("AUTOPILOT requestActivityUpdatesButtonHandler GOOGLE API CLIENT CONNECTED", false);
PSLocationCenter.getInstance().pref.setMotionDetection(context, true);
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
mGoogleApiClient,
Constants.DETECTION_INTERVAL_IN_MILLISECONDS,
getActivityDetectionPendingIntent()
).setResultCallback(this);
}else if(mGoogleApiClient != null && mGoogleApiClient.isConnecting()){
Log.i("","AUTOPILOT requestActivityUpdatesButtonHandler GOOGLE API CLIENT CONNECTING");
Utils.appendLog("AUTOPILOT requestActivityUpdatesButtonHandler GOOGLE API CLIENT CONNECTING", false);
Handler han = new Handler();
han.postDelayed(new Runnable() {
@Override
public void run() {
requestActivityUpdatesButtonHandler();
}
},500);
}else{
Log.i("","AUTOPILOT requestActivityUpdatesButtonHandler GOOGLE API CLIENT NOT CONNECTED");
Utils.appendLog("AUTOPILOT requestActivityUpdatesButtonHandler GOOGLE API CLIENT NOT CONNECTED", false);
buildGoogleApiClient();
}
}

“getActivityDetectionPendingIntent”在哪里:

  private PendingIntent getActivityDetectionPendingIntent() {
Log.i("", "autopilot get activity detection pending intent");
// Reuse the PendingIntent if we already have it.
if (mActivityDetectionPendingIntent != null) {
return mActivityDetectionPendingIntent;
}
Intent intent = new Intent(context, DetectedActivitiesIntentService.class);

// We use FLAG_UPDATE_CURRENT so that we get the same pending intent backListener when calling
// requestActivityUpdates() and removeActivityUpdates().
return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}

奇怪的是,我随后重启了手机。进入应用程序并重新启动后,我只是稍微摇晃手机并开始获取位置。是否有可能以某种方式强制关闭广播接收器?还是要打破的识别 Activity ?还有其他人遇到这个问题吗?有没有办法检查我的广播接收器的状态?我没有日志,因为我没有问题,在日志中。它只是构建 api 客户端,然后用这个请求 Action :

  ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
mGoogleApiClient,
Constants.DETECTION_INTERVAL_IN_MILLISECONDS,
getActivityDetectionPendingIntent()
).setResultCallback(this);

最佳答案

我自己正在调查这个。来自文档:

To conserve battery, activity reporting may stop when the device is'STILL' for an extended period of time. It will resume once the devicemoves again. This only happens on devices that support theSensor.TYPE_SIGNIFICANT_MOTION hardware.

Beginning in API 21, activities may be received less frequently thanthe detectionIntervalMillis parameter if the device is in power savemode and the screen is off.

因此,为了节省电量,ActivityRecognition 会在可能的时候进入休眠状态(并停止触发事件)。

关于android - ActivityRecognition API 一段时间后不发送 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33935700/

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