我有一个使用Activity认可的Detected活动广播接收器。我注意到它确实连接了,但我没有得到任何数据。这是在三星Note 2上。在其他手机上,我尝试过它总是有效的。这是连接到谷歌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();
}
}
其中“GetActivityDetectionPendingContent”是:
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);
}
奇怪的是,我然后重新启动了手机。进入应用程序,重新启动后,我只是稍微摇晃了一下手机,开始获取位置。广播接收器是否有可能以某种方式被强制关闭?或者识别活动被破坏?其他人有这个问题吗?有没有办法检查我的广播接收器的状态?我没有日志,因为我在日志中没有问题。它只是构建api客户端,然后用这个请求动议:
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
mGoogleApiClient,
Constants.DETECTION_INTERVAL_IN_MILLISECONDS,
getActivityDetectionPendingIntent()
).setResultCallback(this);
我自己也在调查这个。从留档:
为了节省电池,当设备长时间处于“静止”状态时,活动报告可能会停止。一旦设备再次移动,它将恢复。这仅在支持传感器的设备上发生。键入\u SIGNIFICANT\u运动硬件。
从API 21开始,如果设备处于省电模式并且屏幕关闭,则接收活动的频率可能低于检测IntervalMillis参数。
因此,为了节省电池,ActivityRecognition将在可能的情况下进入睡眠状态(并停止触发事件)。
我正在尝试创建一个运行游戏循环线程的surfaceView,我花了很多时间来解决这个问题,运行了一段时间后,游戏循环似乎很好,它继续运行,并在第一次运行后继续抛出错误,它运行了一段时间,并像它假设的那样绘制,但随后返回null,我已将System.out。println();在多个位置查看某些方法是否正在运行,以及它们运行了多少次(是的,我知道使用日志,但我不太喜欢它们),无论如何,我注意到的是,
我有带oauth2安全mySql数据库连接和一些控制器的Spring Boot应用程序。我已经在AWS服务器上部署了它,它工作得很好,但它在一段时间后关闭了,它没有得到很多API调用,所以没有理由DDOS失败或outOfMemmory错误,我可以在日志中看到以下消息 2018-10-28 10:58:55.979信息1253---[线程-3]ConfigServletWebServerApplic
我正在尝试设置一个通知,使其在某个时间间隔后出现。我本以为这能起作用,但在我的手机上运行代码时,除了在控制台上打印接收器外,似乎什么都没有发生,我似乎不知道为什么。任何帮助都将不胜感激。 这是用于设置警报的代码。 这是notification receiver类 以下是相关清单行,接收者Android:name=“.notificationreceiver”使用权限Android:name=”co
我们有一个具有Ha all策略的2节点RabbitMQ集群。我们在应用程序中使用Spring AMQP与RabbitMQ对话。生产者部分工作正常,但消费者工作了一段时间并暂停。生产者和消费者作为不同的应用程序运行。更多关于消费者部分的信息。 我们将与一起使用,使用手动模式和默认 在我们的应用程序中,我们创建队列(按需)并将其添加到侦听器中 当我们从10个和20个开始时,消费大约持续15个小时并暂停
问题内容: 这可能是一个重复的问题,但我没有找到想要的东西。我在UI活动中调用AsyncTask, 在doInBackground中调用需要时间的方法。如果一段时间后没有返回数据,我想中断该线程。以下是我尝试执行此操作的代码。 但这并不能在30秒后停止任务,事实上,这花费了更多时间。我也尝试过,但这也不起作用。 谁能告诉我该怎么做或如何在doInBackground中使用isCancelled()
我需要每隔一段时间发送某种保持活动状态的数据包吗? 编辑:要注意,这是与同一台计算机上的对等项。该计算机位于NAT的后面,NAT将用于此计算机的一系列端口转发到该端口。与服务器连接的客户端通过DNS打开连接。即使用myDomain.net端口进行连接。