2011-03-22 16 views
1

當我運行這段代碼拋出異常加載URL。如果將URL中的印地文字符替換爲「Hello」,它會播放該文件。安卓的MediaPlayer無法與印地文字符

當我在瀏覽器中加載這個URL(與印地文字符),它起着就好了。

發生了什麼事?

這裏是我的代碼:

MediaPlayer mediaPlayer = new MediaPlayer(); 

mediaPlayer.setDataSource(getResources().getString(R.string.test)); 

mediaPlayer.prepare(); 

這裏的字符串資源DEF:

<string name="test">http://translate.google.com/translate_tts?q=आलू</string> 
+0

什麼例外? – sarnold 2011-03-22 09:05:00

+0

嗨,你有沒有找到解決方案,播放媒體播放器中的URL的聲音?我也面臨同樣的問題。 – gypsicoder 2011-08-11 16:33:19

回答

1

+1 tdammers是正確的,你不能有一個URI非ASCII字符。

可以有他們在一個IRI,這是什麼,這是:

http://translate.google.com/translate_tts?q=आलू 

瀏覽器通常支持可變光圈(有一些限制),但許多其他工具不(包括,顯然, Android媒體播放器)。對於這些工具,您必須將IRI轉換爲URI。這是通過:

  • 服用任何非ASCII字符的地址的主機名部分,並使用IDN算法編碼它們;

  • 服用任何非ASCII字符的地址的其他的部件(例如這裏,查詢)和%編碼它們的UTF-8字節表示。

這給了你:

http://translate.google.com/translate_tts?q=%e0%a4%86%e0%a4%b2%e0%a5%82 

應該在任何地方工作。 (和粘貼URI這樣到瀏覽器中,通常它會在IRI形式與印地文在地址欄中顯示。)

+0

如果您嘗試使用編碼的uri與%-encoding編碼的MediaPlayer.setDataSource(),它仍然不播放該MP3。但是,如果您將其粘貼到Chrome或Firefox中,它會像您所說的那樣轉換它並播放它。 ??? – mellowg 2011-03-23 10:06:34

+0

@mellog:如果您發現任何解決方案,請在mediaplayer中使用unicode字符播放url,請提供解決方案。 – gypsicoder 2011-08-12 06:58:15

+0

對不起,沒有找到解決方案 - 只是放棄 – mellowg 2011-08-13 18:37:04