【发布时间】:2018-05-10 12:18:35
【问题描述】:
对于我的应用,我使用实现 SensorEventListener 的服务。该服务从可穿戴设备收集传感器数据。在此服务中,我启动通知。上周,当我测试我的应用程序时,一切正常。但是突然间,当我的服务处于前台时,我的可穿戴设备没有显示通知。即使是我的应用程序的旧版本也不再显示通知。这非常令人困惑。所以,为了解决这个问题,这样做:
- 我测试了我的服务是否真的在前台:是的,确实是。在 控制台我也可以看到手表确实在收集数据,所以 服务尽其所能。
- 然后我查看了stackoverflow,发现可能我的应用程序得到了 静音:我在手机、可穿戴设备和 Google Wear 应用上搜索了它,但是 什么也没找到。所以我重置了我的手表,拿了另一部我安装的手机 谷歌穿戴应用。之后,我将可穿戴设备与手机配对。然后我部署 我在“新”手机和手表上的应用程序:没有可见的通知。我也 更改了 application-Id 以查看是否有任何更改:否。
- 我有我当前应用程序的旧版本,我 100% 确定 通知确实出现了。我检查了他们:通知不是 不再可见。
我不知道该怎么办。我的服务启动了,它确实在前台,看起来应用程序没有静音。
我在我的服务的 onCreate() 中设置了通知:
Notification.Builder builder = new Notification.Builder(this);
builder.setContentTitle("TestApplication");
builder.setContentText("Collecting sensor data..");
builder.setSmallIcon(R.drawable.ic_launcher);
startForeground(1, builder.build());
在 onCreate() 中,我还检查我的服务是否在前台。我用来做这件事的方法是这样的(它是从另一个stackoverflow代码复制粘贴,几乎没有变化):
private boolean isServiceRunningInForeground(String serviceName){
boolean serviceRunning = false;
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50);
Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
while (i.hasNext()) {
ActivityManager.RunningServiceInfo runningServiceInfo = i
.next();
if(runningServiceInfo.service.getClassName().equals(serviceName)){
if(runningServiceInfo.foreground)
{
return true;
}
}
}
return false;
}
【问题讨论】:
-
出于故障排除目的,您可以查看此I’m not getting notifications on my watch 指南吗?
标签: android notifications android-service wear-os wearables