0

我正在使用谷歌 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");
4

2 回答 2

1

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

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

(HttpURLConnection Object).addRequestProperty("User-Agent", "Mozilla/5.0");
于 2012-06-23T09:34:25.013 回答
0

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

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

player.setDataSource(uri.toASCIIString());

于 2012-06-20T07:07:31.690 回答