編輯:關於Android編程
百度開發者平台為開發者提供了很多工具,雖然我對百度無感,但是因為有了這些工具,使我們開發程序更加快捷、便利。本文將會簡單介紹如何使用百度語音識別技術豐富我們自己的程序。
隨著大家對Siri 的認知,語音識別技術被應用的越來越廣泛。對於一個普通開發者而言,是沒有精力去開發一個語音識別的模塊的,所以利用現有的技術來實現是最好的選擇。
在下面,我們將會介紹如將百度提供的語音識別技術應用到我們自己的項目中。
首先需要在百度的網站上注冊成為一個名開發者。無論是用使用微信提供的接口,還是百度提供的,首先都去官網注冊成為一名開發者。
然後新建自己的應用,並且給自己的應用添加語音識別的功能,這個時候百度會按照你的ID給你生成兩個Key,一個是API Key,一個是Secret Key,這兩個Key 是需要用在你自己的應用程序中的。
然後去下載頁面去下載響應的Android SDK 和一些文檔。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoMyBpZD0="利用sdk-進行開發">利用SDK 進行開發
首先新建一個項目,然後將開發包中的 Libs 目錄整體 Copy 到工程目錄, Libs 目錄包括了各平台的 SO 庫, 開發者視應用需要可以進行刪減。
然後在工程中添加權限:
因為百度將語音識別技術集成在BaiduASRDigitalDialog 中,然後通過調用這個Dialog 來做處理。並且通過DialogRecognitionListener 來做消息的響應。所以我們需要新建這兩個對象:
private BaiduASRDigitalDialog mDialog = null;
private DialogRecognitionListener mRecognitionListener;
我的程序是通過點擊一個按鈕後,調出語音識別對話框的,代碼如下:
public void ClickButton(View v){
//Toast.makeText(getApplicationContext(), "測試", Toast.LENGTH_SHORT).show();
mCurrentTheme = Config.DIALOG_THEME;
if (mDialog != null) {
mDialog.dismiss();
}
Bundle params = new Bundle();
params.putString(BaiduASRDigitalDialog.PARAM_API_KEY, "QRrYgx7bcO11NWUFFG61jtBN");
params.putString(BaiduASRDigitalDialog.PARAM_SECRET_KEY, "iRNUTBM9Tli0px1HqqyYLtdMdy95ChGz");
params.putInt(BaiduASRDigitalDialog.PARAM_DIALOG_THEME, Config.DIALOG_THEME);
mDialog = new BaiduASRDigitalDialog(this, params);
mDialog.setDialogRecognitionListener(mRecognitionListener);
mDialog.show();
}
當進行完識別後,還需要對識別後的結果作出響應。可以看到上面的代碼有一個setDialogRecognitionListener這個函數來做對響應的監聽。
下面是我首先的相應監聽函數:
mRecognitionListener = new DialogRecognitionListener() {
@Override
public void onResults(Bundle results) {
ArrayList rs = results != null ? results
.getStringArrayList(RESULTS_RECOGNITION) : null;
if (rs != null && rs.size() > 0) {
//setBackgroundColor(rs.get(0));
setPicture(rs.get(0));
}
}
};
當做完對語音的識別後,百度服務器會返回一個對應的字符串組rs,取出rs的第一個詞,來作為結果。
百度對這個語音識別Dialog 分裝的很好,非常利於開發者使用,過程就是:
調出BaiduASRDigitalDialog 對象,該對象負責了錄音已經上傳到服務器中去做處理,得到的結果在DialogRecognitionListener 中予以響應。
我做了個簡單的例子,你說“蘋果”、“梨”、“草莓”、“香蕉”後會將ImageView 設置成對應的圖片。首先打開程序後是圖一:
點擊按鈕後,彈出對話框,說“香蕉”,畫面會改變為香蕉的圖片。
下面是MainActivity的代碼:
package com.example.voicecontrol;
import java.util.ArrayList;
import android.R.drawable;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.baidu.voicerecognition.android.ui.BaiduASRDigitalDialog;
import com.baidu.voicerecognition.android.ui.DialogRecognitionListener;
public class MainActivity extends Activity {
private BaiduASRDigitalDialog mDialog = null;
private DialogRecognitionListener mRecognitionListener;
private int mCurrentTheme = Config.DIALOG_THEME;
private Button button;
private ImageView iw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.VoiceControl);
iw = (ImageView)findViewById(R.id.Iv);
mRecognitionListener = new DialogRecognitionListener() {
@Override
public void onResults(Bundle results) {
ArrayList rs = results != null ? results
.getStringArrayList(RESULTS_RECOGNITION) : null;
if (rs != null && rs.size() > 0) {
//setBackgroundColor(rs.get(0));
setPicture(rs.get(0));
}
}
};
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void ClickButton(View v){
//Toast.makeText(getApplicationContext(), "測試", Toast.LENGTH_SHORT).show();
mCurrentTheme = Config.DIALOG_THEME;
if (mDialog != null) {
mDialog.dismiss();
}
Bundle params = new Bundle();
params.putString(BaiduASRDigitalDialog.PARAM_API_KEY, "QRrYgx7bcO11NWUFFG61jtBN");
params.putString(BaiduASRDigitalDialog.PARAM_SECRET_KEY, "iRNUTBM9Tli0px1HqqyYLtdMdy95ChGz");
params.putInt(BaiduASRDigitalDialog.PARAM_DIALOG_THEME, Config.DIALOG_THEME);
mDialog = new BaiduASRDigitalDialog(this, params);
mDialog.setDialogRecognitionListener(mRecognitionListener);
mDialog.show();
}
/*
* 做處理響應的函數,按鈕顏色的變化
*/
/*public void setBackgroundColor(String color){
if(color.contains("藍色")){
button.setBackgroundColor(Color.BLUE);
}
else if(color.contains("綠色")){
button.setBackgroundColor(Color.GREEN);
}
else if(color.contains("白色")){
button.setBackgroundColor(Color.WHITE);
}
}*/
/*
* 做處理響應的函數,圖片變化
*/
public void setPicture(String fruit){
if(fruit.contains("蘋果")){
iw.setImageDrawable(getResources().getDrawable(R.drawable.apple));
}
else if(fruit.contains("梨")){
iw.setImageDrawable(getResources().getDrawable(R.drawable.pear));
}
else if(fruit.contains("香蕉")){
iw.setImageDrawable(getResources().getDrawable(R.drawable.banana));
}
else if(fruit.contains("草莓")){
iw.setImageDrawable(getResources().getDrawable(R.drawable.strawberry));
}
else {
iw.setImageDrawable(getResources().getDrawable(R.drawable.questionmark));
}
}
}
寫這個不是因為這個很難,而是發現特麼每次新寫一個項目都要寫這些東西,不如就把他們拿出來,以後可以省下不少時間。1:啟動頁面 一個動畫 然後進入app2:第一次打開的引導頁
Google為ndroid平台開發Web Service提供了支持,提供了Ksoap2-android相關架包 1.下載該夾包可以直接登錄http://code.goog
在程序開發過程中,LOG是廣泛使用的用來記錄程序執行過程的機制,它既可以用於程序調試,也可以用於
使用數據線調試應用難免不方便,本篇博客介紹使用ADB Wireless工具,當手機和電腦處在同一網絡下,實現無線調試應用。ADB Wireless能夠讓手機用無線來取代U