科大讯飞的语音识别功能用在安卓代码中,我把语音识别写成了Service,然后在Fragment直接调用service服务。科大讯飞语音识别用的是带对话框的那个,直接调用科大讯飞的语音接口,代码采用链表结果集的方式获取数据。 
这个语音识别需要在官网申请APPID

本博来自:http://blog.csdn.net/zhaocundang 小波LinuxQQ463431476

测试:

自己项目采用了科大讯飞语音识别服务,报告中是这样解释的:

语音Service服务代码设计

(1)要想写好Service代码,必须了解Service的生命周期.

(2)首先启动Service服务的方法是: 
getActivity().startService(new Intent(getActivity(),VoiceService.class)); 
停止Service服务: 
getActivity().stopService(new Intent(getActivity(),VoiceService.class)); 
(3)将类继承与Service: 
public class VoiceService extends Service{ 

自动重载OnBind()函数,通过OnBind()的返回值,将Service的实例返回调用者。 
(3) 调用科大讯飞语音API接口代码 
先调用手机麦克风录音: 
rd.setSampleRate(RATE.rate16k); 
调用语音API包中的语音识别对话框,将录音发送到服务器,并接受服务器返回的结果,将数据以链表数据结构的形式传过来,获取结果: 
final StringBuilder sb = new StringBuilder(); 
rd.setListener(new RecognizerDialogListener() { 
public void onResults(ArrayList result, boolean isLast) { 
for (RecognizerResult recognizerResult : result) { 
sb.append(recognizerResult.text); 


public void onEnd(SpeechError error) { 

}); 
(4)文本语音朗读的调用: 
先是声明播放对象: 
private static SynthesizerPlayer player ; 
这里我直接封装一个朗读函数,appid是申请的应用授权id,代码如下: 
public void speak(String words){ 
player = SynthesizerPlayer.createSynthesizerPlayer(getActivity(),”appid=57527406”); 
player.playText(words, null,null); //播放文本 
}

主要的代码:

开启和关闭服务:


public void onClick(View v) {// TODO Auto-generated method stubswitch(v.getId()){ case R.id.button1: getActivity().startService(new Intent(getActivity(),VoiceService.class)); break; case R.id.button2: getActivity().stopService(new Intent(getActivity(),VoiceService.class)); break; } } 

服务中:

package zcd.voice;import java.util.ArrayList;import android.app.Service;
import android.content.Intent;
import android.os.IBinder; import android.view.WindowManager; import android.widget.Toast; import com.iflytek.speech.RecognizerResult; import com.iflytek.speech.SpeechConfig.RATE; import com.iflytek.speech.SpeechError; import com.iflytek.ui.RecognizerDialog; import com.iflytek.ui.RecognizerDialogListener; public class VoiceService extends Service{ private RecognizerDialog rd; private String text; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); // Toast.makeText(this, "Service onCreated", Toast.LENGTH_LONG).show(); rd = new RecognizerDialog(this ,"appid=57627d9c"); } public void onStart(Intent intent, int startId) { // Toast.makeText(this, " Service onStart", Toast.LENGTH_LONG).show(); showReconigizerDialog(); } private void showReconigizerDialog() { //sms 简单语音识别文本 rd.setEngine("sms", null, null); //设置麦克风采样频率 rd.setSampleRate(RATE.rate16k); final StringBuilder re = new StringBuilder(); //设置识别后的回调结果 rd.setListener(new RecognizerDialogListener() { @Override public void onResults(ArrayList<RecognizerResult> result, boolean isLast) { for (RecognizerResult recognizerResult : result) { re.append(recognizerResult.text); } } @Override public void onEnd(SpeechError error) { //识别完成 //R.id.txt_result.setText(sb.toString()); text = re.toString(); Toast.makeText(VoiceService.this,re.toString(), Toast.LENGTH_LONG).show(); sendmsg(); } }); //txt_result.setText(""); //先设置为空,等识别完成后设置内容 rd.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); // service 中getwindowmanager 设置优先级显示对话框 rd.show(); } public void sendmsg() { //broadcast // service 通过广播来发送识别结果到Voice Fragment Intent intent=new Intent(); intent.putExtra("message",text); intent.setAction("zcd.voice"); sendBroadcast(intent); } } 

Service中是无法显示对话框的,显示对话框的方式就是使用getwindow的方法,设置窗口最高优先级即可了!

安卓Android科大讯飞语音识别代码使用详解相关推荐

  1. android message 代码,Android Handler移除Message详解及实例代码

    Android Handler移除Message详解 问题: 1.removeMessage(what)函数是否只能移除对应what值的Message? 2.对于Delayed发送的Message,能 ...

  2. android 设置listview滚动条,Android ListView 滚动条的设置详解及实例代码

    Android ListView 滚动条的设置详解 1.滚动条的属性 android:scrollbarAlwaysDrawHorizontalTrack 设置是否始终显示水平滚动条.这里用Scrol ...

  3. Unity 分享 功能 用Unity Native Share Plugin 实现链接、图片、视频等文件的分享+ 安卓 Ios 都可以,代码图文详解

    Unity 分享 功能 用Unity Native Share Plugin 实现链接.图片.视频等文件的分享+ 安卓 Ios 都可以,代码图文详解 前言 环境 效果 一.Unity Native S ...

  4. android demo示例代码,Android Service demo例子使用详解(示例代码)

    Android Service demo例子使用详解\ 概述 Service 是 Android 的四大组件之一,它主要的作用是后台执行操作,Activity 属于带有 UI 界面跟用户进行交互,而 ...

  5. android OKHttp的基本使用详解

    今天,简单讲讲Android里如何使用OKHttp. Android框架系列: 一.android EventBus的简单使用 二.android Glide简单使用 三.android OKHttp ...

  6. 《Android多媒体应用开发实战详解:图像、音频、视频、2D和3D》——1.3节搭建Android应用开发环境...

    本节书摘来自异步社区<Android多媒体应用开发实战详解:图像.音频.视频.2D和3D>一书中的第1章,第1.3节搭建Android应用开发环境,作者 王石磊 , 吴峥,更多章节内容可以 ...

  7. Android APP:Preference使用详解和实例(附源码)

    Android APP:Preference使用详解和实例 一.Preference 是Android app中重要的控件之一,Settings 模块大部分都是通过Preference 实现的,这里将 ...

  8. Android客户端实现注册/登录详解(一)

    前言 我们在开发安卓App时难免要与服务器打交道,尤其是对于用户账号信息的注册与登录更是每个android开发人员必须掌握的技能,本文将对客户端的注册/登录功能的实现进行分析,不到之处还请指出. 在这 ...

  9. Android自定义View进阶-MotionEvent详解

    欢迎Follow我的GitHub, 关注我的CSDN. 其余参考Android目录 我们微信公众号:杨守乐 推荐文章: 如果你喜欢上了一个程序员小伙,献给所有的程序员女友 学习资料(干货汇集)不断更新 ...

最新文章

  1. ES6系列--对象扩展
  2. 修改ubuntu的终端提示符
  3. 案例二十、自动化运维-代码上线
  4. android 端口进程号,Android中如何根据端口号寻找对应的进程
  5. golang 关闭gc 并手动gc_Golang 防内存泄漏编码原则
  6. python编程设计_程序设计入门—Python
  7. asp activex 读取服务器上的文件,webshell中上传asp文件调用服务器ActiveX控件溢出获取shell...
  8. DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601
  9. qnap raid5升级raid6_QNAP TS-419P组建RAID5后重建Transmission!
  10. CocosCreator中Protobuf的简单使用
  11. 学习笔记-数据结构与算法之线性表
  12. Jquery动态进行图片缩略
  13. 随着公网对讲机市场占有率得不断增长,部分对讲机厂家为了得到用户的认可,不断升级对讲机及时以及对讲机的功能和性能,因此越来越多的全国对讲机以及公网对讲机问世。但是某些用户不清楚对讲机的原理,不禁会问
  14. php页面中播放flv视频,页面播放flv格式视频[原创]
  15. python短时傅里叶变换_短时傅里叶变换(Short Time Fourier Transform)原理及 Python 实现...
  16. 【看看这长尾效应】长尾效应综述
  17. 阿里云大数据平台的实操:ODPS的SQL语句
  18. 苹果手机互传一键换机
  19. 人间有味是清欢。—第七天
  20. 数据同步工具—DataX—Web部署使用

热门文章

  1. 如何选择最佳技术来加速文件传输!
  2. 数据库相关的系统巡检参考项
  3. wpf prism4 出现问题:无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。...
  4. 设计思维的要素:优化愿景(Vision)
  5. bash/shell的字符串trim实现
  6. Tomexam在线考试系统 2.1
  7. 滑雪在日本 之 新泻篇 17
  8. ASP.NET程序员职位要求!
  9. 胎教也是准爸爸的责任
  10. OpenCV BRIEF角点检测