我一直在开发一个在手机状态栏中显示所有通知的应用程序(如新消息或未接来电)。通过研究,我发现在 android 中做到这一点的唯一方法是创建一个可访问性服务。所以我通过在我的辅助功能服务中获取 AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED 做了同样的事情。
这是我的 onServiceConnected() 方法:
public void onServiceConnected(){
if (isInit) {
return;
}
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
setServiceInfo(info);
isInit = true;
}
这是有效的,但不完全是我希望的。它实际上显示了许多不在状态栏中的通知,并且可能是由我不想要的后台应用程序生成的。它也不是实时的。它仅在我重新打开应用程序时更新,而不是在应用程序打开时更新。此外,只要我在设置中启动服务,我的手机(银河笔记)就会开始说话。不确定这是代码中的错误还是某些问题。
我无法弄清楚问题到底出在哪里,但我认为它可能是反馈类型。我尝试了很多,但在任何地方都找不到服务的不同反馈类型的含义。
FEEDBACK_AUDIBLE
FEEDBACK_HAPTIC
FEEDBACK_AUDIBLE
FEEDBACK_VISUAL
FEEDBACK_GENERIC
有人可以告诉我这些反馈类型意味着什么吗?如果我更改反馈类型,我会收到不同的通知吗?如果您认为我走错了方向,请指导我如何解决这些问题。如果我忘记提供一些重要信息,请让我知道。
任何形式的帮助将非常感激。