日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

安卓

 王者歸來(lái)525 2012-03-27
現(xiàn)在,隨著移動(dòng)應(yīng)用的日益普及,移動(dòng)語(yǔ)音應(yīng)用越來(lái)越受到用戶的重視和喜愛,本文將指導(dǎo)用戶如何在Android SDK中使用語(yǔ)音引擎去創(chuàng)建簡(jiǎn)單的應(yīng)用。在Android中使用語(yǔ)音引擎其實(shí)是很容易的事情,通過(guò)若干步驟就可以實(shí)現(xiàn)了,盡管其中有些地方在使用中要注意。在本教程中,將一步步直接教讀者如何創(chuàng)建語(yǔ)音應(yīng)用,具體的代碼在文末有下載。

  步驟一 創(chuàng)建Android工程

  我們首先創(chuàng)建一個(gè)Android工程,選用的是Android 2.3以上SDK的。

  步驟二 創(chuàng)建用戶界面

  由于我們的例子很簡(jiǎn)單,所以只需要往界面中增添若干控件就可以了,我們打開main.xml文件,寫入如下代碼,增加了一個(gè)本文框和一個(gè)按鈕:

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="Enter some text:"

  />

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  />

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:text="Speak"

  />

  其中文本框中是輸入要發(fā)音朗讀的文字內(nèi)容。界面如下圖:

  

Android中使用語(yǔ)音引擎入門

  ▲

  步驟三 編寫監(jiān)聽事件

  接下來(lái),我們?yōu)榘粹o添加事件處理,首先要獲得用戶輸入的文字,代碼如下:

  import android.view.View.OnClickListener;

  import android.widget.Button;

  import android.view.View;

  import android.widget.EditText;

  public class SpeakingAndroid extends Activity implements OnClickListener

  {

  //create the Activity

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  Button speakButton = (Button)findViewById(R.id.speak);

  //監(jiān)聽button事件

  speakButton.setOnClickListener(this);

  }

  //onClick事件的響應(yīng)代碼

  public void onClick(View v) {

  //獲得用戶輸入的文字

  EditText enteredText = (EditText)findViewById(R.id.enter);

  String words = enteredText.getText().toString();

  //調(diào)用語(yǔ)音引擎的方法

  speakWords(words);

  }

  }

  步驟四 編寫相關(guān)的語(yǔ)音方法

  首先,要導(dǎo)入相關(guān)的語(yǔ)音引擎包,代碼如下:

  import android.speech.tts.TextToSpeech;

  import android.speech.tts.TextToSpeech.OnInitListener;

  接下來(lái),為了能系統(tǒng)先對(duì)運(yùn)行語(yǔ)音引擎的準(zhǔn)備工作進(jìn)行檢查,因此先要對(duì)其運(yùn)行前的數(shù)據(jù)進(jìn)行就緒檢查,所以首先聲明一個(gè)成員變量,如下:

  private int MY_DATA_CHECK_CODE = 0;

  并且在oncreate方法中,編寫如下代碼:

  Intent checkTTSIntent = new Intent();

  checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);

  startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);

  以上代碼的目的為,創(chuàng)建一個(gè)Intent,去檢查TTS所需要的數(shù)據(jù)是否準(zhǔn)備好,如果準(zhǔn)備好的話,則調(diào)用onActivityResult方法,這個(gè)方法在下文中會(huì)提到。

  步驟五 創(chuàng)建TTS的實(shí)例

  在onActivityResult方法中,可以開始創(chuàng)建其TTS語(yǔ)音引擎的實(shí)例,代碼如下:

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  if (requestCode == MY_DATA_CHECK_CODE) {

  if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {

  myTTS = new TextToSpeech(this, this);

  }

  else {

  Intent installTTSIntent = new Intent();

  installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);

  startActivity(installTTSIntent);

  }

  }

  }

  當(dāng)TTS的數(shù)據(jù)就緒數(shù)據(jù)檢查完畢后,將調(diào)用這個(gè)方法,其中resultCode為TTS驗(yàn)證是否通過(guò)的標(biāo)記,如果通過(guò)驗(yàn)證的話,則通過(guò)myTTS = new TextToSpeech(this, this);

  創(chuàng)建一個(gè)語(yǔ)音TTS實(shí)例。如果沒(méi)能通過(guò)TTS準(zhǔn)備就緒的安裝測(cè)試,則新聲明一個(gè)Intent,將用戶引導(dǎo)到這個(gè)安裝TTS引擎的界面中去。

  步驟六 初始化引擎的數(shù)據(jù)

  由于在本程序中實(shí)現(xiàn)了OnInitListener接口,因此可以在oninit方法中,對(duì)語(yǔ)音引擎進(jìn)行初始化設(shè)置,比如設(shè)置語(yǔ)言等,首先應(yīng)該導(dǎo)入相關(guān)的類庫(kù),如下:

  import java.util.Locale;

  在oninit方法中寫入如下代碼:

  public void onInit(int initStatus) {

  if (initStatus == TextToSpeech.SUCCESS) {

  myTTS.setLanguage(Locale.US);

  }

  else if (initStatus == TextToSpeech.ERROR) {

  Toast.makeText(this, "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show();

  }

  }

  這里判斷如果TTS已經(jīng)就緒成功,則調(diào)用setLanguage方法設(shè)置為使用對(duì)應(yīng)的語(yǔ)言(這

  里是英文),如果判斷TTS不能準(zhǔn)備就緒,則調(diào)用Toast的顯示方法告知用戶。

  步驟七 讓TTS說(shuō)話

  在準(zhǔn)備好以上步驟后,最后一步就是讓TTS開口說(shuō)話了,在speakWords方法中,寫入如下代碼即可

  private void speakWords(String speech) {

  myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null);

  }

  其中的speak方法中有很多參數(shù)可以選用,具體請(qǐng)參考Android文檔,這里選用了

  參數(shù)TextToSpeech.QUEUE_FLUSH,如果想讓TTS語(yǔ)音引擎連續(xù)不斷地朗讀,可以使用

  myTTS.speak(speech, TextToSpeech.QUEUE_ADD, null)的參數(shù)。如果要求應(yīng)用不再進(jìn)行朗讀,則可以添加一句:

  myTTS.shutdown();

  但除非是明確用戶不在需要應(yīng)用進(jìn)行朗讀,否則如果要連續(xù)讓系統(tǒng)朗讀的話,則不應(yīng)該添加這句代碼。

  小結(jié)

  本文簡(jiǎn)單一步步地介紹了如何在Android SDK中使用語(yǔ)音引擎TTS,讀者可以通過(guò)這個(gè)例子,創(chuàng)建更多豐富的語(yǔ)音應(yīng)用。 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多