国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 開發系統自帶語音模塊應用

2019-12-12 05:59:07
字體:
來源:轉載
供稿:網友

需求:項目中需要添加語音搜索模塊,增加用戶體驗

解決過程:在網上搜到語音搜索例子,參考網上代碼,加入到了自己的項目,完成產品要求。這個問題很好解決,網上能找到很多的資料,但是沒有直接導入工程就能用的例子,我這里寫了一個完整的Demo,代碼可以直接粘貼到自己項目中去,實現了

語音搜索,并將搜索結果展示。

語音搜索大致流程:啟動系統自帶的Intent,Intent參數設置為RecognizerIntent.ACTION_RECOGNIZE_SPEECH,再加上一些提示參數

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "請開始說話"); 

當完成語音搜索之后在onActivityResult里進行數據接收,我這里只是展示了語音搜索的第一個結果,系統提供的結果有很多,是根據相似度排列的。我在Demo里使用了handler,在handler里把數據展示了出來。項目中這種情況下,對數據的一些處理都是在handler中進行。開發的過程中遇到一些語音搜索崩潰的現象,最后發現在結果展示的時候不要做一些費時的操作。

代碼如下

public class MainActivity extends Activity {   private Button btnVoice;   private TextView tvVoiceResult;   private static final int VOICE_RECOGNITION_REQUEST_CODE = 123456;      private Handler jumpHandler = new Handler() {     public void handleMessage(android.os.Message msg) {       tvVoiceResult.setText((String)msg.obj);     };   };      @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     btnVoice = (Button) findViewById(R.id.btnVoice);     tvVoiceResult = (TextView) findViewById(R.id.tvVoiceResult);     btnVoice.setOnClickListener(new OnClickListener() {              @Override       public void onClick(View v) {         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, "請開始說話");           startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);         }catch(ActivityNotFoundException e) {           AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);           builder.setTitle("語音識別");           builder.setMessage("您的手機暫不支持語音搜索功能,點擊確定下載安裝Google語音搜索軟件。您也可以在各應用商店搜索“語音搜索”進行下載安裝。");           builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {             @Override             public void onClick(DialogInterface dialog, int which) { //             跳轉到下載語音網頁             }           });           builder.setNegativeButton("取消", null);           builder.show();         }       }     });   }    @Override   public boolean onCreateOptionsMenu(Menu menu) {     getMenuInflater().inflate(R.menu.activity_main, menu);     return true;   }    @Override   protected void onActivityResult(int requestCode, int resultCode, Intent data) {     super.onActivityResult(requestCode, resultCode, data);     if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == MainActivity.RESULT_OK) {       ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);       if(matches.size() > 0) {         Message msg = new Message();         msg.obj = matches.get(0);         jumpHandler.sendMessage(msg);       }     }   }    } 

以上就是對Android 語音模塊開發的一個小實例,有需要的朋友可以參考下。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和龙市| 垣曲县| 布尔津县| 孝感市| 大洼县| 大石桥市| 吉木乃县| 霸州市| 古田县| 东莞市| 荔波县| 花莲县| 石林| 宁夏| 宣武区| 平遥县| 兴义市| 杭州市| 青岛市| 蒙阴县| 于田县| 渑池县| 兴安盟| 益阳市| 临潭县| 即墨市| 天长市| 犍为县| 天祝| 梓潼县| 民勤县| 宕昌县| 吉木乃县| 武隆县| 内乡县| 高碑店市| 岳阳县| 拜城县| 嫩江县| 武汉市| 台江县|