2011-05-11 82 views
0

您好我需要從谷歌的texttospeech API在here播放MP3文件。但我無法弄清楚如何做到這一點,這裏是我嘗試過的代碼,但沒有工作。流媒體或從應用程序內的在線網址播放MP3

String url = "http://translate.google.com/translate_tts?tl=en&q="+URLEncoder.encode(home)+URLEncoder.encode(scores[0])+ 
     URLEncoder.encode(away)+URLEncoder.encode(scores[1]); 

    player = new MediaPlayer(); 
    try { 
     BufferedInputStream bis = new BufferedInputStream(new java.net.URL(url).openStream()); 
     FileOutputStream fos = new FileOutputStream("/sdcard/tts_google.mp3"); 
     BufferedOutputStream bos = new BufferedOutputStream(fos,1024); 
     byte [] data = new byte[1024]; 

     int x=0; 
     while((x=bis.read(data,0,1024))>=0){ 
      bos.write(data,0,x);    
     } 
     player.reset(); 
     player.start(); 

    } catch (MalformedURLException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

此人給錯誤

05-11 14:04:12.967: ERROR/MediaPlayer(20055): start called in state 1 
05-11 14:04:12.967: ERROR/MediaPlayer(20055): error (-38, 0) 
05-11 14:04:12.967: DEBUG/MediaPlayer(20055): start() out 
05-11 14:04:12.997: ERROR/MediaPlayer(20055): Error (-38,0) 

這裏是我試過

httpClient = new DefaultHttpClient(); 
    handler = new BasicResponseHandler(); 
    httpGet = new HttpGet(url); 

    try { 

     String response = httpClient.execute(httpGet,handler); 
     Log.d("SCORODROID", response); 

     File mp3File = File.createTempFile("tts_result",".mp3"); 
     FileOutputStream fos = new FileOutputStream(mp3File); 
     fos.write(response.getBytes()); 

     FileInputStream fis = new FileInputStream(mp3File); 
     player.setDataSource(fis.getFD()); 

     player.prepare(); 
     player.start(); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
第二碼

這其中也給出了錯誤

05-11 14:05:40.687: ERROR/MediaPlayer(20132): Unable to to create media player 
05-11 14:05:40.687: WARN/System.err(20132): java.io.IOException: setDataSourceFD failed.: status=0x80000000 
05-11 14:05:40.687: WARN/System.err(20132):  at android.media.MediaPlayer.setDataSource(Native Method) 
05-11 14:05:40.687: WARN/System.err(20132):  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:891) 
05-11 14:05:40.687: WARN/System.err(20132):  at com.scoredroid.android.LiveScoreFetcher.ttsGoogle(LiveScoreFetcher.java:80) 
05-11 14:05:40.687: WARN/System.err(20132):  at com.scoredroid.android.SpeechInputActivity$GetMetadata.onPostExecute(SpeechInputActivity.java:151) 
05-11 14:05:40.687: WARN/System.err(20132):  at com.scoredroid.android.SpeechInputActivity$GetMetadata.onPostExecute(SpeechInputActivity.java:1) 
05-11 14:05:40.687: WARN/System.err(20132):  at android.os.AsyncTask.finish(AsyncTask.java:417) 
05-11 14:05:40.687: WARN/System.err(20132):  at android.os.AsyncTask.access$300(AsyncTask.java:127) 
05-11 14:05:40.687: WARN/System.err(20132):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 
05-11 14:05:40.687: WARN/System.err(20132):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-11 14:05:40.687: WARN/System.err(20132):  at android.os.Looper.loop(Looper.java:143) 
05-11 14:05:40.687: WARN/System.err(20132):  at android.app.ActivityThread.main(ActivityThread.java:4196) 
05-11 14:05:40.687: WARN/System.err(20132):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-11 14:05:40.687: WARN/System.err(20132):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-11 14:05:40.687: WARN/System.err(20132):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
05-11 14:05:40.687: WARN/System.err(20132):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 

無代碼樣品工作的方式可以喲你能幫我解決這個問題嗎?

回答

0

你確定你從那裏得到一個MP3嗎?你檢查了答覆嗎?例如,在控制檯中使用wget會給我403錯誤,雖然它在該URL的瀏覽器中工作。所以Google可能會阻止這樣的請求(即不是源自瀏覽器)。如果您只想使用TTS,請嘗試使用integrated TTS engine

+0

是的,你是對的,它希望在請求頭的引用,我不知道他們把它集成到SDK謝謝反正...... – 2011-05-11 16:54:49

相關問題