Glass 的 SpeechRecognizer 权限不足错误

2024-04-26

我正在使用 GDK 先睹为快构建一个应用程序,但在沉浸式应用程序中无法进行语音识别。这是我的第一个安卓项目。

我试着遵循这个:如何在 Android 手机中使用语音识别而不出现烦人的对话框 https://stackoverflow.com/questions/6316937/how-can-i-use-speech-recognition-without-the-annoying-dialog-in-android-phones/17768011#17768011

取得初步进展后,我遇到了 RecognitionListener 类抛出错误 9(权限不足)的问题。

我使用的是GDK,它是Android-15。

识别器的初始化在我的 onCreate() 方法中:

sr = SpeechRecognizer.createSpeechRecognizer(this);       
sr.setRecognitionListener(new listener()); 

当我收到点击回调时,我开始监听:

private GestureDetector createGestureDetector(Context context) {
        GestureDetector gestureDetector = new GestureDetector(context);
        //Create a base listener for generic gestures
        gestureDetector.setBaseListener( new GestureDetector.BaseListener() {
            @Override
            public boolean onGesture(Gesture gesture) {
//              Log.info(gesture.name());
                if (gesture == Gesture.TAP) {
                    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);        
                    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                    intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");

                    intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5); 
                    sr.startListening(intent);
                    return true;
                }
                return false;
            }
        });

        return gestureDetector;
    }

这是我的侦听器类的定义:

class listener implements RecognitionListener          
    {
        public void onReadyForSpeech(Bundle params)
        {
            Log.d(TAG, "onReadyForSpeech");
        }
        public void onBeginningOfSpeech()
        {
             Log.d(TAG, "onBeginningOfSpeech");
        }
        public void onRmsChanged(float rmsdB)
        {
             Log.d(TAG, "onRmsChanged");
        }
        public void onBufferReceived(byte[] buffer)
        {
             Log.d(TAG, "onBufferReceived");
        }
        public void onEndOfSpeech()
        {
             Log.d(TAG, "onEndofSpeech");
        }
        public void onError(int error)
        {
             Log.d(TAG,  "error " +  error);
//               mText.setText("error " + error);
        }
        public void onResults(Bundle results)                   
        {
             String str = new String();
             Log.d(TAG, "onResults " + results);
             ArrayList<String> data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
             for (int i = 0; i < data.size(); i++)
             {
                       Log.d(TAG, "result " + data.get(i));
                       str += data.get(i);
             }
//               mText.setText("results: "+String.valueOf(data.size()));        
        }
        public void onPartialResults(Bundle partialResults)
        {
             Log.d(TAG, "onPartialResults");
        }
        public void onEvent(int eventType, Bundle params)
        {
             Log.d(TAG, "onEvent " + eventType);
        }
    }

这是我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.medicalglass"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="15" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.medicalglass.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

在触摸事件到来并且我调用开始侦听后,立即调用侦听器的 onError 方法,错误代码为 9,这表示权限不足。如果有人有 Android 语音命令或玻璃语音命令的经验,并且知道为什么这仍然失败,我将非常感激。谢谢。


对于 Android M 及以上版本,您必须请求许可。

 if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(activity, Manifest.permission.GET_ACCOUNTS) == PackageManager.PERMISSION_GRANTED)
                    return;
                else {
                    if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.RECORD_AUDIO)) {
                        Toast.makeText(activity, "Record audio is required", Toast.LENGTH_LONG).show();
                    } else {
                        ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.RECORD_AUDIO}, RECORD_AUDIO);
                    }
                }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Glass 的 SpeechRecognizer 权限不足错误 的相关文章

  • 我可以在 Android 上使用带有文本视图的列表视图和图像图标吗

    我需要一个像下面的 Android 应用程序那样的列表视图 由于我无法发布图片 所以应该是这样的 图片在这里 一些自由文本 用户名等 这是你的任务 任务1 gt 任务2 gt 任务 1 和任务 2 是将从数据库动态获取的列表 我试图拥有一个
  • 如何从 BroadcastReceiver 刷新 ListView?

    如果我打电话notifyDataSetChanged 在与我的 ListView 关联的自定义适配器上 所有视图都应该自行刷新 getView 将被调用 现在我有一个正在监听事件的 BroadcastReceiver 当事件触发时 List
  • “android.enableUnitTestBinaryResources”已弃用[重复]

    这个问题在这里已经有答案了 我刚刚更新了我的 Android Studio 现在当我构建我的项目时 我收到此错误 选项 android enableUnitTestBinaryResources 已弃用 这 当前默认值为 假 已从当前版本中
  • 调用“DisplayManagerGlobal.getDisplayInfo()”会导致应用程序中的应用程序无响应 (ANR)

    显然 应用程序中的某些内容从不同线程 主线程和绑定器线程 调用该方法 这会导致内部 ANR 它经常发生 我不知道它发生在哪里 因为我无法在模拟器或我拥有的测试设备上重现它 该应用程序的作用 它是一个应用程序储物柜应用程序 它在应用程序覆盖层
  • 何时使用支持库

    我对 Android 支持库的用途和何时需要它感到困惑 据我了解 使用支持库的主要优点是 Android 可以在旧版本中自行实现主题和 UI 功能 而无需开发人员显式定义它们 这些关键的 UI 功能之一是操作栏 它是为 Honeycomb
  • android 表格内的可聚焦行

    我在 xml 中有一个 ScrollView 其中包括一个 TableLayout 我的问题是 每次我单击它时是否可以有一个可聚焦的行 这是我的 xml 代码
  • 如何将json从android发送到php?

    为了将 json 从 android 发布到 php 我使用了 Volley 库StringRequest目的 StringRequest sr new StringRequest Request Method POST url new R
  • 模拟器的窗口比手机屏幕太大

    我做了一个小例子来测试我的Android环境 当我在AVD上启动执行时 它看起来太大了 就好像它是平板电脑屏幕一样 如何调整大小使其看起来像手机屏幕 Android Studio 2 2更新后就没有了Emulator Tab in Edit
  • DrawerLayout 第一次打开有点步骤

    我有一个 DrawerLayout 当我第一次滑动它时 它是逐步出现的 比如滞后或类似的东西 但之后它移动得很好 我不知道要发布什么代码 因为正如我所说 它工作正常 只是第一次打开它时 它打开不顺利 这是我的布局
  • com.google.android.gms.games.GamesClient 无法解析

    我正在尝试使用 google play 游戏服务开发实时多人游戏 并下载了示例 ButtonClicker2000 但 Eclipse ADK 一直抱怨 com google android gms games GamesClient 无法
  • 如何允许另一个应用程序访问我的应用程序的数据目录?

    假设我有一个名为 A 的应用程序 其数据目录为 com example test 现在我想制作另一个名为 B 的应用程序来修改 com example test 中的某些内容 当然我知道两者必须共享相同的签名 但我还需要什么 基本上我正在尝
  • 二进制 XML 文件行 #:膨胀类片段时出错:仅在 Android (6.0)-Marshmallow 上

    我无法在 Android M 上显示 google 地图 这是布局 xml
  • 调用replace()方法后片段闪烁/闪烁

    我有一个MainActivity 应该在两个片段之间切换 内容和设置 扩展PreferenceFragmentCompat 一切工作正常 但最近我实施了Dagger 2依赖注入 我的设置片段开始闪烁 当您按下底部导航栏上的设置项时 有时会出
  • SignalR 与 android(Java) 有问题

    我想在 android 应用程序和 net core 服务器项目之间进行实时通信 我在 stackoverflow 中尝试了一个问题 我跟着这个one https stackoverflow com questions 32573823 h
  • 应用程序被终止时无法处理 FCM 消息

    我一直在阅读各种教程 其他 SO 线程以及官方 Android 开发人员和 Firebase 文档 但无济于事 我已经尝试了几乎所有的方法 但我已经耗尽了精力和时间 因为我正在修复以前可以工作但现在不再工作的通知系统 我正在使用 Azure
  • TextView ClickableSpan 按下状态的样式[重复]

    这个问题在这里已经有答案了 我对 ClickableSpan 进行子类化 以自定义 TextView 中链接的文本样式 private static class LinkSpan extends ClickableSpan Override
  • 在主表单之前显示登录表单

    我在表单之间导航时遇到问题 我使用 Delphi XE5 创建了一个 Android Firemonkey 移动应用程序 我目前有一个登录表单和主表单 现在我想要有关如何处理登录表单以显示在主表单之前的建议 在 项目选项 中的表单下 选择要
  • 始终启动没有历史记录的新活动实例

    有没有办法将活动作为没有历史记录的新实例启动 在清单文件中尝试了以下内容 android launchmode singleinstance android noHistory true 我能够实现我所需要的 但是一旦屏幕锁定 就会显示之前
  • 如何在 Android 上从后台线程显示 Toast?

    我怎样才能显示Toast http developer android com guide topics ui notifiers toasts html来自线程的消息 您可以通过调用Activity s runOnUiThread您线程中
  • 如何在显示项目之前为 RecyclerView 高度设置动画

    我怎样才能 或者我应该说什么时候可以在显示项目之前对 recyclerView 高度进行动画处理 我可以在 onMeasure 中获得最终高度 但项目总是出现太快并且动画不起作用 关于如何让这个动画发挥作用有什么想法吗 None

随机推荐

  • Unix shell 之间的可移植性 - 我是否正确地考虑了这个问题?

    每当我编写 shell 脚本 主要是软件开发实用程序或构建工具 时 我通常都会尝试避免使用 bash 而倾向于使用普通的旧 sh 来实现可移植性 然而最近我遇到了越来越多的问题 其中有用的功能不可用 或者使用 sh 的系统之间的行为实际上不
  • 节点命令不起作用[重复]

    这个问题在这里已经有答案了 我正在使用 ubuntu 14 04 当我在终端上使用 node hello js 命令时 没有任何反应 我使用 sudo apt get 命令安装了软件包 我不知道出了什么问题 没有错误消息或任何东西 我搜索了
  • 在matplotlib中,如何绘制多色线,如彩虹

    我想用不同的颜色绘制平行线 例如 我想要两条厚度为 3 的平行线 一红一蓝 而不是一条粗细为 6 的红线 任何想法将不胜感激 Merci 即使使用智能偏移 见下文 连续点之间存在锐角的视图中仍然存在问题 Zoomed view of sma
  • Maven依赖冲突

    在我的项目中 有2个库 每个库都依赖于XML解析类java xml parsers DocumentBuilderFactory 这些库中的每一个都引用来自不同 jar 的文件 一个从名为 xmlParserAPIs 的 jar 获取它 而
  • C++ 中的跨平台原始数据类型

    与 Java 或 C 不同 C 中的原始数据类型的大小可能因平台而异 例如 int不保证是 32 位整数 各种编译器环境定义数据类型 例如uint32 or dword为此目的 但似乎没有固定大小数据类型的标准包含文件 实现最大可移植性的推
  • 如何避免在 Scala 中使用 asInstanceOf

    目前我的代码需要类转换 val dataWriter BytesDataWriter createDataWriter def createDataWriter p SomeClass p create datawriter asInsta
  • 带有对象的 Javafx 可编辑组合框

    我刚刚开始学习 Java Fx 我有一个装满物体的组合框 我处理了 toString 方法 我可以看到我想要在屏幕上显示的名称 但现在我想让它可编辑 用户将输入自己的文本 ComboBox 将创建一个新对象并将该文本放入正确的字段中 我知道
  • re.findall结果的顺序有保证吗?

    返回的匹配列表是否为re findall总是与源文本中的顺序相同 是的 正如中所述re module docs https docs python org 2 library re html module contents 以字符串列表的形
  • 可以在子例程中使用模块吗?

    最近 我开始使用 OO Perl 并且为我正在开发的新项目创建了很多新对象 因为我不熟悉有关 OO Perl 的任何最佳实践 所以我们很急于完成它 P 我将大量此类代码放入每个函数中 sub funcx use ObjectX i don
  • “在捆绑 NSBundle 中找不到名为“MainStoryboard”的故事板”

    我已经在一个应用程序上工作了很长时间 突然我得到了这个 在捆绑包中找不到名为 MainStoryboard 的故事板 NS捆绑 我已经在 StackOverflow 上红色了类似的问题 并且我尝试了所有方法 包括 重命名故事板文件 重新添加
  • 类型错误:无法读取 null 的属性“名称”

    我有一个用户对象 他们可以在其中编辑他们的信息 电话号码 电子邮件等 我无法访问输入name在 的里面setState回调并继续获取TypeError Cannot read property name of null 但是当我登录时eve
  • Mozilla Firefox 不再支持dialog.showModal

    我有一个巨大的 asp 网站项目及其弹出窗口 使用自showModalDialog 几个月前mozilla更新了 这个功能出现了一些问题 所以我用了ModalDialog 填充 https github com niutech showMo
  • Tastypie 访问继承模型中的字段

    是否可以使用 tastypie 在相关模型上包含字段 根据我的下面的模型 如果我将一个 VideoContent 和一个 TextContent 实例保存到数据库 我就可以从我的内容资源中获取 2 个对象 但是没有任何其他字段可用 是否可以
  • 打开包含透视图等的 MTrimmedWindow 的多个实例

    我已经为我的 RCP 应用程序定义了一个 主窗口 作为 MTrimmedWindow 其中包含透视图 部件等 像往常一样 在 Application e4xmi 中 是否可以开通额外的以编程方式获取此主窗口的实例 类似于从 MPartDes
  • 布隆过滤器的实现

    使用布隆过滤器 我们将获得空间优化 cassandra 框架也有 Bloom Filter 的实现 但具体来说 这种空间优化是如何实现的呢 您可以使用以下示例了解它如何节省空间 假设我在 Google Chrome 团队工作 我想向浏览器添
  • Vba访问错误91

    我尝试运行这段代码 Public Sub Production UpdateStatus ByVal lngProductionId As Long ByVal NewProductionStatus As eProductionStatu
  • Heroku 中没有运行 Django 的 Web 进程

    我试图在heroku中部署我的应用程序 但是当我最终尝试在heroku中运行我的应用程序时 我在浏览器中看到了这样的内容 Application Error An error occurred in the application and
  • RSelenium:抓取加载缓慢的动态加载页面

    我不确定是否是因为我的网速很慢 但我正在尝试抓取一个在您向下滚动页面时加载信息的网站 我正在执行一个转到页面末尾的脚本 并等待 Selenium Chrome 服务器加载附加内容 服务器确实更新并加载新内容 因为我能够抓取最初不在页面上的信
  • 如何在python中获得逻辑正确的二进制移位

    正如标题所示 JavaScript 中有一个特定的运算符 gt gt gt 例如 在 JavaScript 中我们将得到以下结果 1000 gt gt gt 3 536870787 1000 gt gt 3 125 1000 gt gt g
  • Glass 的 SpeechRecognizer 权限不足错误

    我正在使用 GDK 先睹为快构建一个应用程序 但在沉浸式应用程序中无法进行语音识别 这是我的第一个安卓项目 我试着遵循这个 如何在 Android 手机中使用语音识别而不出现烦人的对话框 https stackoverflow com qu