編輯:關於Android編程
需求:項目中需要添加語音搜索模塊,增加用戶體驗
解決過程:在網上搜到語音搜索例子,參考網上代碼,加入到了自己的項目,完成產品要求。這個問題很好解決,網上能找到很多的資料,但是沒有直接導入工程就能用的例子,我這裡寫了一個完整的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 語音模塊開發的一個小實例,有需要的朋友可以參考下。
一、概述android系統電池部分的驅動程序,繼承了傳統linux系統下的Power Supply驅動程序架構,Battery驅動程序通過Power Supply驅動程序
本文實例講解的是如何畫一個滿滿圓形水波紋loadingview,這類效果應用場景很多,比如內存占用百分比之類的,分享給大家供大家參考,具體內容如下效果圖如下:預備的知識:
上一篇已經把王略中的圖片獲取到了。生活中有這麼些場景:微信聯網打開別人照片後,當手機斷網的時候再去點擊人家的額圖片還能完整看到。這時候,已經不是去網路中獲取圖片了,其實微
Android平台提供了一些傳感器讓你能監測設備的移動。它們中的兩個傳感器總是基於硬件的(加速度和陀螺儀),另外的這類這些傳感器中的3個即能使用基於硬件的也能使用基於軟件