最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android開(kāi)發(fā)之文本內(nèi)容自動(dòng)朗讀功能實(shí)現(xiàn)方法

 更新時(shí)間:2017年09月05日 11:22:15   作者:pku_android  
這篇文章主要介紹了Android開(kāi)發(fā)之文本內(nèi)容自動(dòng)朗讀功能實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Android自動(dòng)朗讀TTS功能的操作步驟、相關(guān)函數(shù)使用方法與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Android開(kāi)發(fā)之文本內(nèi)容自動(dòng)朗讀功能實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

Android提供了自動(dòng)朗讀支持。自動(dòng)朗讀支持可以對(duì)指定文本內(nèi)容進(jìn)行朗讀,從而發(fā)生聲音;不僅如此,Android的自動(dòng)朗讀支持還允許把文本對(duì)應(yīng)的音頻錄制成音頻文件,方便以后播放。這種自動(dòng)朗讀支持的英文名稱為TextToSpeech,簡(jiǎn)稱TTS。

借助于TTS的支持,可以在應(yīng)用程序中動(dòng)態(tài)地增加音頻輸出,從而改善用戶體驗(yàn)。

Android的自動(dòng)朗讀支持主要通過(guò)TextTospeech來(lái)完成,該累提供了如下一個(gè)構(gòu)造器:

TextTospeech(Context context, TextTospeech.OnInitListenerlistener)

從上面的構(gòu)造器不難看書,當(dāng)創(chuàng)建TextTospeech對(duì)象時(shí),必須先提供一個(gè)OnInitListener監(jiān)聽(tīng)器——該監(jiān)聽(tīng)器負(fù)責(zé)監(jiān)聽(tīng)TextTospeech的初始化結(jié)果。

一旦在程序中獲得了TextTospeech對(duì)象之后,接下來(lái)可以調(diào)用TextTospeech的setLanguage(Localeloc)方法來(lái)設(shè)置該TTS發(fā)聲引擎應(yīng)使用的語(yǔ)言、國(guó)家選項(xiàng)。

如果調(diào)用setLanguage(Localeloc)的返回值是“TextToSpeech.LANG_COUNTRY_AVAILABLE”說(shuō)明當(dāng)前TTS系統(tǒng)可以支持所設(shè)置的語(yǔ)言、國(guó)家選項(xiàng)。

對(duì)TextToSpeech設(shè)置完成后,就可以調(diào)用它的方法來(lái)朗讀文本了,具體方法可參考TextToSpeech的API文檔。TextToSpeech類中最常用的方法是如下兩個(gè)。

speak(String text,int queueMode,HashMap<String,String>params)

synthesizeToFile(Stringtext,HashMap<String,String>params,String filename)

上面兩個(gè)方法都用于把text文字內(nèi)容轉(zhuǎn)換為音頻,區(qū)別只是speak方法是播放轉(zhuǎn)換的音頻,而synthesizeToFile是把轉(zhuǎn)換得到的音頻保存成聲音文件。

上面兩個(gè)方法中的params都用于指定聲音轉(zhuǎn)換時(shí)的參數(shù),speak()方法中的queueMode參數(shù)指定TTS發(fā)音隊(duì)列模式,該參數(shù)支持如下兩個(gè)常量。

TextToSpeech.QUEUE_FLUSH:如果指定該模式,當(dāng)TTS調(diào)用speak方法時(shí), 它會(huì)中斷當(dāng)前實(shí)例正在運(yùn)行的任務(wù)(也可以理解為清楚當(dāng)前語(yǔ)音任務(wù),轉(zhuǎn)而執(zhí)行新的語(yǔ)音任務(wù))

TextToSpeech.QUEUE_ADD:如果指定該模式,當(dāng)TTS調(diào)用speak方法時(shí),會(huì)把新的發(fā)音任務(wù)添加到當(dāng)前發(fā)音任務(wù)列隊(duì)之后——也就是等任務(wù)隊(duì)列中的發(fā)音任務(wù)執(zhí)行完成后再來(lái)執(zhí)行speak()方法指定的發(fā)音任務(wù)。

當(dāng)程序用完了TextToSpeech對(duì)象之后,可以在Activity的OnDestroy()方法中調(diào)用它的shutdown()來(lái)關(guān)閉TextToSpeech、釋放它所占用的資源。

歸納起來(lái),使用TextToSpeech的步驟如下

1、創(chuàng)建TextToSpeech對(duì)象,創(chuàng)建時(shí)傳入OnInitListener監(jiān)聽(tīng)器監(jiān)聽(tīng)創(chuàng)建是否成功。

2、設(shè)置TextToSpeech所使用語(yǔ)言、國(guó)家選項(xiàng),通過(guò)返回值判斷TTS是否支持該語(yǔ)言、國(guó)家選項(xiàng)。

3、調(diào)用speak()或者synthesizeToFile方法。

4、關(guān)閉TTS,回收資源。

下面的程序示范了如何利用TTS來(lái)朗讀用戶所輸入的文本內(nèi)容。

Speech.java:

public class Speech extends Activity
{
  TextToSpeech tts;
  EditText editText;
  Button speech;
  Button record;
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // 初始化TextToSpeech對(duì)象
    tts = new TextToSpeech(this, new OnInitListener()
    {
      @Override
      public void onInit(int status)
      {
        // 如果裝載TTS引擎成功
        if (status == TextToSpeech.SUCCESS)
        {
          // 設(shè)置使用美式英語(yǔ)朗讀
          int result = tts.setLanguage(Locale.US);
          // 如果不支持所設(shè)置的語(yǔ)言
          if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE
            && result != TextToSpeech.LANG_AVAILABLE)
          {
            Toast.makeText(Speech.this, "TTS暫時(shí)不支持這種語(yǔ)言的朗讀。", 50000)
              .show();
          }
        }
      }
    });
    editText = (EditText) findViewById(R.id.txt);
    speech = (Button) findViewById(R.id.speech);
    record = (Button) findViewById(R.id.record);
    speech.setOnClickListener(new OnClickListener()
    {
      @Override
      public void onClick(View arg0)
      {
        // 執(zhí)行朗讀
        tts.speak(editText.getText().toString(),
          TextToSpeech.QUEUE_ADD, null);
      }
    });
    record.setOnClickListener(new OnClickListener()
    {
      @Override
      public void onClick(View arg0)
      {
        // 將朗讀文本的音頻記錄到指定文件
        tts.synthesizeToFile(editText.getText().toString(), null,  "/mnt/sdcard/sound.wav");
        Toast.makeText(Speech.this, "聲音記錄成功!", 50000).show();
      }
    });
  }
  @Override
  public void onDestroy()
  {
    // 關(guān)閉TextToSpeech對(duì)象
    if (tts != null)
    {
      tts.shutdown();
    }
  }
}

上面的程序第一行粗體字代碼設(shè)置創(chuàng)建了一個(gè)TextToSpeech對(duì)象,第二行粗體字使用美式英語(yǔ)進(jìn)行英語(yǔ)朗讀。接下來(lái)程序分別體統(tǒng)了兩個(gè)按鈕,一個(gè)按鈕用于執(zhí)行朗讀發(fā)生,一個(gè)按鈕用于將文本內(nèi)容朗讀音頻保存成聲音文件,分別通過(guò)調(diào)用TextToSpeech對(duì)象的兩個(gè)方法完成。

運(yùn)行程序,可以看到下圖界面:

在界面中,當(dāng)用戶點(diǎn)擊“朗讀”按鈕后,系統(tǒng)將會(huì)調(diào)用TTS的speak()方法來(lái)朗讀文本框的內(nèi)容;當(dāng)用戶單擊“記錄聲音”按鈕后,系統(tǒng)會(huì)調(diào)用synthesizeToFile()方法把文本框中的文本對(duì)應(yīng)的朗讀音頻記錄到SD卡的聲音文件中——單擊該按鈕后將可以在SD卡的根目錄下生成一個(gè)sound.wav文件,該文件可以被導(dǎo)出,在其他音頻播放軟件中播放。

程序重寫Activity的onDestroy()方法,并在該方法中關(guān)閉了TextToSpeech對(duì)象,回收了它的資源。

提示:由于不同的文字,在不同的語(yǔ)言、國(guó)家中的發(fā)音是不同的,尤其是歐美,它們所使用的都是字母文字,因此一段文本內(nèi)容,使用不同的語(yǔ)言、國(guó)家選項(xiàng)來(lái)朗讀,發(fā)音效果是截然不同的。目前Android的TTS暫時(shí)不支持中文。

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android開(kāi)發(fā)入門與進(jìn)階教程》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android數(shù)據(jù)庫(kù)操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android電池電量跳變

    Android電池電量跳變

    本篇文章主要介紹了Android電池電量跳變的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • JSON解析和XML解析區(qū)別對(duì)比

    JSON解析和XML解析區(qū)別對(duì)比

    JSON解析和XML解析是較為普遍的兩種解析方式,其中JSON解析的市場(chǎng)分額更大。這篇文章主要介紹了JSON解析和XML解析區(qū)別對(duì)比,需要的朋友可以參考下
    2016-10-10
  • Android中設(shè)置組件半透明和透明的效果示例

    Android中設(shè)置組件半透明和透明的效果示例

    這篇文章主要給大家介紹了Android中設(shè)置組件半透明和透明效果的相關(guān)資料,文中給出了詳細(xì)的介紹和示例代碼,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • android實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能

    android實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Android中SurfaceView和普通view的區(qū)別及使用

    Android中SurfaceView和普通view的區(qū)別及使用

    SurfaceView第一印象它是一個(gè)view,因?yàn)樗^承了View,本文主要介紹了SurfaceView和普通view的區(qū)別及使用,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Flutter滾動(dòng)組件之SingleChildScrollView使用詳解

    Flutter滾動(dòng)組件之SingleChildScrollView使用詳解

    這篇文章主要為大家詳細(xì)介紹了Flutter滾動(dòng)組件之SingleChildScrollView使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • android嵌套滾動(dòng)入門實(shí)踐

    android嵌套滾動(dòng)入門實(shí)踐

    嵌套滾動(dòng)是 Android OS 5.0之后,google 為我們提供的新特性,本篇文章主要介紹了android嵌套滾動(dòng)入門實(shí)踐,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Android入門之使用SharedPreference存取信息詳解

    Android入門之使用SharedPreference存取信息詳解

    這篇文章主要為大家詳細(xì)介紹了Android如何使用SharedPreference實(shí)現(xiàn)存取信息,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Android有一定的幫助,需要的可以參考一下
    2022-12-12
  • android雜記:C++文件的添加log方法分享

    android雜記:C++文件的添加log方法分享

    這篇文章介紹了android雜記:C++文件的添加log方法,有需要的朋友可以參考一下
    2013-09-09
  • Android單選按鈕對(duì)話框用法實(shí)例分析

    Android單選按鈕對(duì)話框用法實(shí)例分析

    這篇文章主要介紹了Android單選按鈕對(duì)話框用法,以完整實(shí)例形式分析布局及對(duì)話框類的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09

最新評(píng)論

东乡县| 大丰市| 屏南县| 宝应县| 台前县| 左权县| 丹阳市| 繁峙县| 富源县| 五莲县| 喜德县| 新津县| 海城市| 泾阳县| 陵川县| 德清县| 彰武县| 洪雅县| 台中县| 顺义区| 浦城县| 广安市| 集安市| 潞西市| 清水县| 彭山县| 南京市| 昭苏县| 佛教| 崇阳县| 宁安市| 丰镇市| 页游| 广南县| 筠连县| 江永县| 仁布县| 西林县| 县级市| 甘德县| 大石桥市|