0

google 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)

もう1つは、アラビア語のコードをリンクに直接使用しようとすると、次のように表示されます。

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 に答える