欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 開發(fā)系統(tǒng)自帶語音模塊應(yīng)用

 更新時間:2016年07月14日 11:20:57   投稿:lqh  
本篇文章 主要介紹 Android 開發(fā)自帶語音模塊實(shí)例,在開發(fā)Android系統(tǒng)中會用到系統(tǒng)語音搜索模塊,這里給大家一個參考實(shí)例

需求:項(xiàng)目中需要添加語音搜索模塊,增加用戶體驗(yàn)

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

語音搜索,并將搜索結(jié)果展示。

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

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

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

代碼如下

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("您的手機(jī)暫不支持語音搜索功能,點(diǎn)擊確定下載安裝Google語音搜索軟件。您也可以在各應(yīng)用商店搜索“語音搜索”進(jìn)行下載安裝。"); 
          builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { 
            @Override 
            public void onClick(DialogInterface dialog, int which) { 
//             跳轉(zhuǎn)到下載語音網(wǎng)頁 
            } 
          }); 
          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 語音模塊開發(fā)的一個小實(shí)例,有需要的朋友可以參考下。

相關(guān)文章

最新評論