【更新】有人说不会使用科大讯飞的语音包。这里是传送门,能够參考从零系列的前四篇文章

(一)利用科大讯飞语音包实现Android语音识别Demo

(二)科大讯飞语音包Mscdemo的使用

(三)自己定义类中调用讯飞语音包错误解决的方法

(四)运用Handler另起线程执行科大讯飞语音识别

本文主要介绍怎样利用语音包实现口语控制打开应用程序,比如:说“打开计算器”,计算器就彭地打开了。

要完毕这个功能,首先要识别出指令是“打开",然后识别出应用程序名称是”计算器“。这些工作都交给科大讯飞语音包的语义理解模块完毕。

我们要做的,首先是把已安装的应用程序的名称和包名保存下来,由于启动一个应用程序须要它的包名(PackageName)和类名(ClassName)。

List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
		for (PackageInfo pi : packages){
			InstalledAppMap.put(pi.applicationInfo.loadLabel(getPackageManager()).toString(),
					pi.packageName);
		}

第二,我们须要通过应用程序名找到向相应的包名。应用程序名靠语音包解析返回的Json获取,一般语义理解返回的结构是这种

String str = "{\"semantic\": {\"slots\": {\"name\": \"计算器\"" +
"}},\"rc\": 0,\"operation\": \"LAUNCH\",\"service\": \"app\","+ 
 "\"text\": \"打开计算器\"}";

\"就是Java中String内容中的转义引號,你懂得。然后我写了一个方法专门依据SlotItem获取SlotValue,比較简单就不贴了,非常easy得到应用名为”计算器“。

第三步就是通过包名获得类名,这里用到了ResolveInfo类。


转载请注明出处,谢谢咯!


相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-26
  • 2022-12-23
  • 2022-01-01
  • 2021-06-30
  • 2021-11-30
  • 2022-12-23
猜你喜欢
  • 2021-08-18
  • 2022-01-11
  • 2021-11-30
  • 2021-11-22
  • 2022-12-23
相关资源
相似解决方案