我用到的是原聲的mediaplayer和texttospeech。首先封裝乙個類,
mmanager = (audiomanager) objects.requirenonnull(mcontext).getsystemservice(context.audio_service);
int max = mmanager.getstreammaxvolume(audiomanager.stream_music);
int scurrent = mmanager.getstreamvolume(audiomanager.stream_music);
logutils.e(tag, "max volume: " + max);
logutils.e(tag, "current volume: " + scurrent);
//設定系統音量為現在的音量
mmanager.setstreamvolume(audiomanager.stream_music, scurrent, 0);
mmanager.requestaudiofocus(mlistener, audiomanager.stream_music, audiomanager.audiofocus_gain_transient);
if (mmediaplayer == null)
mmediaplayer.setonpreparedlistener(mp -> logutils.e(tag, "prepared: "));
mmediaplayer.setoncompletionlistener(mp -> );
mmediaplayer.setonerrorlistener((mp, what, extra) -> );
smediaplayer = mediaplayer.create(mcontext, r.raw.blank_audio);
soptions.put(texttospeech.engine.key_param_utterance_id, "utterance");
@override
public void ondone(string utteranceid)
}logutils.e(tag, "ondone: mpushlist: " + arrays.tostring(mpushlist.toarray()));
if (mpushlist.size() > 0) else
}@override
public void onerror(string utteranceid)
});
當我收到個推之後,呼叫mediaplayer.start方法,在setoncompletionlistener裡面進行tts的語音播報 private static void speak(string data)
最後退出登入之後,釋放掉資源
public static void clear()
if (mmediaplayer != null)
if (mlistener != null)
if (mdisposable != null)
}下面就是我遇到的坑了,基礎是mvp框架裡面,mainactivity中的mainfragment中退出,在ondestroy方法裡面呼叫clear()釋放資源之後,會重新開啟loginactivity中的loginfragment,當再次進入之後,語音不播報了。
首先分析是因為上次建立的mediaplayer被釋放了,然後沒有資源了,肯定不會播報啊,但是,當在loginfragment的oncreatview初始化之後,還是不行,經過多天的踩坑(自己太菜),發現之前呼叫的ondestroy中clear的時候,會在loginfragment的oncreatview方法之後呼叫,再次初始化的meadiplayer又被釋放掉了。然後在mainfragment的oncreat裡面再進行初始化,然後就沒事了。整體總結來說:fragment之間的生命週期順序的問題。(至今還不算很明白,求教!!!!)第一次寫文章,邏輯混亂,見諒!希望能幫到你。
Android簡訊收到,語音播報
傳送簡訊功能介面 傳送簡訊demo description author ldm date 2016 4 22 上午9 07 53 public class smsactivity extends activity implements onclicklistener 註冊簡訊監聽廣播 descri...
Android簡訊收到,語音播報
傳送簡訊功能介面 傳送簡訊demo description author ldm date 2016 4 22 上午9 07 53 public class smsactivity extends activity implements onclicklistener 註冊簡訊監聽廣播 descri...
android 科大訊飛語音播報簡單整合
2.在main目錄下匯入相對應的so檔案 3.新增許可權,許可權可按自己需求而定 4.同步專案 並進行初始化操作 private void initkdxf 5.放入語音播報的語音檔案 語音檔案在官網demo裡面附帶可自行搜尋 注 免費的 6.在相對應的播報頁面進行播報 private void i...