问题描述
我一直在尝试在我的应用程序中放置一个热词检测器(Android的官方检测器)(借助此功能:http://androidxref.com/5.0.0_r2/xref/frameworks/base/tests/VoiceInteraction/),但与此同时我遇到了一些问题。其中一个(目前我认为它是主要的)是onReady()
中的MainInteractionService
从未被调用,我也不知道为什么。
我的应用程序已作为系统安装,并有权访问所有权限。另外,我还借助以下存储库https://github.com/anggrayudi/android-hidden-api使用内部和隐藏的Android API进行了编译,因此我还可以访问那些“秘密”的东西哈哈(例如getKeyphraseEnrollmentInfo()
方法)。>
一个问题可能是我正在Lollipop 5.0(API 21)上尝试此操作,有些事情需要API 23(棉花糖),但这仅在MainInteractionSession
上(我会稍作讨论), TestInteractionActivity
和我评论了加载该行的行(用于测试-看看我是否可以首先调用onReady()),因此应该没有问题(?)。但是,从onReady()
调用MainInteractionService
时,不会调用VoiceInteractionMain
。
如果有帮助,我删除了两个名称均为Session的文件。原因是MainInteractionSession
有太多错误,我无法修复。我不知道该怎么做。我也可以说我是Android的入门者(或多或少-但我不太了解如何使这些功能正常工作)。这是原因吗?我没有看到MainInteractionSessionService
被调用(那个人叫MainInteractionSession
-一个有很多错误的人)。我看不到对此的任何呼叫,也没有任何广播公司或使系统调用该服务的东西。
如果我可以纠正错误,我仍然无法在Lollipop上使用,因为有些东西需要棉花糖(我认为这在Lollipop 5.0上可用... ??? URL具有“ 5.0.0” ”),但这是另一回事。我会得到一个较新的电话,因此可以在那里进行测试。但是首先,如果实际上需要修复所有问题,那么我需要修复所有问题。
所以这里至少有两个问题:
- 如果我似乎拥有所有权限和东西,为什么
onReady()
永远不会被呼叫? - 如果有人能够修复
MainInteractionSession
上的错误,那么您可以发布如何修复或修复的代码会很不错,因为我似乎不知道如何解决它。自2014年以来,甚至onCreate()
都发生了变化,这是因为该东西想要来自onCreate()
调用者的Bundle,并且该函数甚至不再具有该参数... [固定-> UPDATE] 。
PS::如果有任何帮助,我可以使用语音注册应用(http://androidxref.com/5.0.0_r2/xref/frameworks/base/tests/VoiceEnrollment/)。至少我可以“注册”,但是我真的不知道那是什么。我没有错误。而且我只是复制粘贴了代码,并且所有工作都没有任何麻烦(只是在清单中被弄乱了,因为它已经过时并且应用程序无法启动)。
编辑:我刚刚发现所有写在上面的最后一个API是API22。从API 23开始,方法如上所述发生了变化。我试图使用具有隐藏/内部API的API 21中的android.jar进行编译,但这会产生资源错误,因此我可能不会打扰-我真的不知道如何解决该问题,我也不会在我的Google搜索上进行搜索,因为我的新手机使用的是Android 8.1,而不是Lollipop ...我希望使用更新的API来使用它。
更新:忘记第二个问题。只需修复所有错误。毕竟不是那么难。我要做的就是右键单击该方法,转到声明,然后在API 22上打开它。然后更改为API 29,然后继续,Android Developers查找具有相同描述但名称不同的方法。之后,我可以在不禁用任何活动或服务的情况下进行编译。虽然... onReady()仍然没有被调用。如果有人知道为什么,我将不胜感激-除非是因为我在棒棒糖上,但直到现在一个月后,我才能确定(即使我说那不是问题)。
更新2:我想我可能已经发现了问题(或者至少是问题)。来自Android开发者(https://developer.android.com/reference/android/service/voice/VoiceInteractionService):
- “用户选择的当前VoiceInteractionService 始终由系统运行(...)”;
- “检查给定的服务组件是否为当前活动的VoiceInteractionService。” -来自
isActiveService()
。
我从没选择任何东西...!?我该如何选择呢?有人知道吗?我需要编辑一些系统文件吗?也许是我在Android设置中从未见过的某些设置?
是关于可访问性吗?也许我需要将其作为某种可访问性应用程序/服务/某种东西,然后在此处激活?还是更高级的东西?
编辑:正如此答案所说(https://stackoverflow.com/a/46014838/8228163),我需要继续进行设置,语言和输入,语音输入,然后选择应用。但是,似乎没有任何作用,因为仍然没有调用onReady()。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)