Adr*_*scu 14 android voice-recognition
对于使用Android 语音识别API的每个人来说,曾经有一个方便的RecognitionListener,你可以注册,将各种事件推送到你的回调.特别是,有以下onBufferReceived(byte[])
方法:
public abstract void onBufferReceived (byte[] buffer)
从那时起:API等级8收到更多声音.此功能的目的是允许向用户提供有关捕获的音频的反馈.无法保证将调用此方法.
参数
buffer
缓冲区包含一系列表示单通道音频流的大端16位整数.采样率取决于实现.
虽然该方法明确指出无法保证它将被调用,但在ICS和之前它将被有效地被调用100%的时间:通常足够,至少,通过连接以这种方式接收的所有字节,你可以重建整个音频流并播放它.
然而,出于某种原因,在Jellybean SDK中,这神奇地停止了工作.没有关于弃用的通知,代码仍在编译,但onBufferReceived
现在从未调用过.从技术上讲,这并没有破坏他们的API(因为它说"无法保证"该方法将被调用),但显然这对于许多依赖于这种行为的事情来说是一个突破性的变化.
有没有人知道为什么禁用这个功能,以及是否有办法在Jellybean上复制它的行为?
澄清:我意识到整个RecognizerIntent
事情是一个具有多个实现的界面(包括一些可在Play商店中获得),并且他们每个人都可以选择如何处理RecognitionListener
.我特指的是绝大多数Jellybean手机使用的默认Google实施方式.
小智 8
谷歌并未将此方法称为Jelly Bean语音应用程序(QuickSearchBox).它根本就不在代码中.除非谷歌工程师有官方评论,否则我无法给出明确答案"为什么"他们这样做了.我确实搜索了开发人员论坛,但没有看到任何有关此决定的评论.
语音识别的ics默认值来自Google的VoiceSearch.apk.你可以反编译这个apk,看看并找到有一个活动来处理行动意图*android.speech.action.RECOGNIZE_SPEECH*.在这个apk中,我搜索了"onBufferReceived",并在com.google.android.voicesearch.GoogleRecognitionService $ RecognitionCallback中找到了对它的引用.
Jelly Bean系统,谷歌重新命名VoiceSearch.apk到QuickSearch.apk,并提出了很多新增加的应用程序(例如:脱机听写).你会期望仍然找到onBufferReceived调用,但由于某种原因它完全消失了.
归档时间: |
|
查看次数: |
2501 次 |
最近记录: |