在Google TTS API中使用阿拉伯字符

时间:2012-04-19 01:13:49

标签: android string media-player google-api arabic

我正在使用谷歌TTS API,我想用阿拉伯语进行查询但不断收到错误,我已将文本文件编码设置为UTF-8,这是我的代码

    String oLanguage = "ar";
    MediaPlayer player = new MediaPlayer();
    String mainText = "الله";
    try {           
        player.setAudioStreamType(AudioManager.STREAM_MUSIC);
        player.setDataSource("http://translate.google.com/translate_tts?tl=" + oLanguage + "&q=" + mainText);
        player.prepare();
        player.start();

    } catch (Exception e) {
        // TODO: handle exception
    }

当我使用其他语言时,代码工作正常,但当我使用阿拉伯语时,我收到此错误

04-19 01:04:10.221: E/MediaPlayer(665): error (1, -2147483648)

另一件事是当我尝试将阿拉伯语代码直接用于链接时,它会像这样显示

player.setDataSource("http://translate.google.com/translate_tts?tl=ar&q=%D8%A7%D9%84%D9%84%D9%87");

2 个答案:

答案 0 :(得分:1)

经过长时间的尝试解决这个问题之后,我找到的唯一解决方案是在发出类似浏览器的请求之前更改用户代理。

然而,根据我的研究,将媒体播放器的用户代理更改为非常复杂,所以我决定先下载文件然后再播放。在每种情况下,仍然需要使用下面的行

更改用户代理
(HttpURLConnection Object).addRequestProperty("User-Agent", "Mozilla/5.0");

答案 1 :(得分:0)

关于编码网址的原因,试试这个:

URI uri =新URI(“”http://translate.google.com/translate_tts?tl=“+ oLanguage +”& q =“+ mainText”);

player.setDataSource(uri.toASCIIString());