gpt4 book ai didi

android - android中辅助功能服务的不同反馈类型的含义?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:38:58 26 4
gpt4 key购买 nike

我一直在开发一款在手机状态栏中显示所有通知(如新消息或未接来电)的应用程序。通过研究,我发现在 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;
}

这是可行的,但不是我所希望的。它实际上显示了许多状态栏中不存在的通知,并且可能是由我不想要的后台应用程序生成的。它也不是实时的。它仅在我重新打开应用程序时更新,而不是在应用程序打开时更新。此外,一旦我在设置中启动该服务,我的手机(galaxy note)就会开始通话。不确定这是错误还是代码中的某些问题。
我不知道问题到底出在哪里,但我认为可能是反馈类型。我尝试了很多,但在任何地方都找不到服务的不同反馈类型的含义。

FEEDBACK_AUDIBLE
FEEDBACK_HAPTIC
FEEDBACK_AUDIBLE
FEEDBACK_VISUAL
FEEDBACK_GENERIC

有人可以告诉我这些反馈类型意味着什么吗?如果我更改反馈类型,我会收到不同的通知吗?如果您认为我正朝着错误的方向前进,那么请指导我如何解决这些问题。让我知道我是否忘记提供一些基本信息。

非常感谢任何形式的帮助。

最佳答案

好吧,我无法回答您所有的问题,但我可以为您提供一些帮助。正如您提到的,您只需要状态栏通知,而不需要其他通知,例如 toast 等。因此,为此,您可以在服务中尝试使用以下代码。

public void onAccessibilityEvent(AccessibilityEvent event) {
final int eventType = event.getEventType();
if (eventType == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
Parcelable parcelable = event.getParcelableData();

if(parcelable instanceof Notification){
// statusbar notification
List<CharSequence> messages = event.getText();
if (messages.size() > 0) {
// here you can do whatever you want with the notification.
//Log.d(tag, "Saved event");
}
}
}
}

还可以像这样在 onServiceConnected 中设置超时:

info.notificationTimeout=100;  

希望对你有用。

关于android - android中辅助功能服务的不同反馈类型的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19740631/

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