- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个使用 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/
我很想知道 GooglePlay 服务中的 ActivityRecognition 是如何工作的? 我认为加速度计数据可以识别 Activity 。对吗?请告诉我详细情况如何? 最佳答案 我也在寻找这
我已经将这段代码放在一起来获取用户 Activity ,看看他是走路还是开车还是静止不动,但它不起作用,onHandleIntent 从未调用过。它正在连接到 GoogleApiClient。 这是我
我希望使用 Google Play 服务 ActivityRecognition API作为 Android 应用程序的一部分,该应用程序的大部分使用都将处于离线状态;用户通常会出门在外,并且无法保证
根据我的研究,我意识到 Google 的 Activity Recognition API 允许您检测手机用户正在进行的 Activity (步行、驾驶等),但我想检测过渡中的变化。我想知道这种转
我有一个使用 ActivityRecognition 的 DetectedActivities 的广播接收器。我注意到它确实连接了,但我没有收到任何数据。这是在三星 Note 2 上。在我试过的其他手
我正在使用 ActivityRecognitionClient 类来获取用户 Activity 的数据,无论他是走路、运行还是骑自行车等...... 问题在于使用 PendingIntent,所以我可
有没有什么好的方法可以模拟DetectedActivity.IN_VEHICLE在 Android 模拟器中。目前,我正在尝试获取 ActivityRecognitionApi通过 telnet 发送
我正在为位置使用新的 API 并尝试 ActivityRecognition。我使用了 Google Developers Training 上的代码库在我想更新 UI 之前,一切都很顺利。 (我知道
我正在寻找实现这个的通用设计: 我想注册到 ActivityRecognition API 以接收此 API 不时调用的 IntentService 中的定期更新,而我的应用程序中的其他所有内容都完全
我是一名优秀的程序员,十分优秀!