android之语音识别

android内置了语音识别包,我们可以通过语音识别包设置我们自己的语音识别程序,识别率还不错,嘿嘿,至少我说的,95%能准确识别,依样画葫芦,具体的代码还不是很懂,做个文章,以后查起来也方便

前期准备,包括确认系统是否有安装语音识别包等,上代码

PackageManager pgm = getPackageManager();
			List<ResolveInfo> activities = pgm.queryIntentActivities(
					new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
			if(activities.size() != 0){
				try{
					/*语音识别intent*/
					intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
					intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
							RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
					//在识别画面出现的说明
					intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "语音识别");
					//intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10);
					startActivityForResult(intent,VOICE_RECOGNITION_REQUEST_CODE);
				}catch(Exception e){}
			}else{
				Toast.makeText(this,"没有安装语音识别包",Toast.LENGTH_SHORT).show();
			}

上面的VOICE_RECOGNITION_REQUEST_CODE是定义的一个标志

private static final int VOICE_RECOGNITION_REQUEST_CODE = 0x1008;

到这里startActivityForResult之后,下来的事情就交给内置的语音识别程序做了,我们只需要等待并且分析识别结果就可以了。

结果分析:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		switch(requestCode){
		case VOICE_RECOGNITION_REQUEST_CODE:
			if(resultCode == RESULT_OK){
				String strRec = null;
				ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
				final String[] resultsArray = new String[results.size()];
				results.toArray(resultsArray);
				AlertDialog.Builder builder = new AlertDialog.Builder(this);
				builder.setTitle("请选择识别结果")
						.setItems(resultsArray, new DialogInterface.OnClickListener(){
							public void onClick(DialogInterface dialog,
									int which) {
								// TODO Auto-generated method stub
								etInput.setText(resultsArray[which]);
							}						
						})
						.create().show();
			}else{
				Toast.makeText(this, "识别出错", Toast.LENGTH_SHORT).show();
			}
			break;
		}
		super.onActivityResult(requestCode, resultCode, data);
	}


核心部分就是这么一句:

ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

返回了识别结果,我们要干的事情,就是把结果按字串分开,然后通过我们的方式发送到屏幕上就OK
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值