5

オンラインでファイルを持っています。を使用して再生しようとしていmedia player using live streamingます。しかし、メディアプレーヤーは、error (-1,1004) アラビア文字が含まれているため、メディアプレーヤーが正しいURLを取得していないと思うので、Html.encodeまたはUrlEncoderクラスでエンコードしようとすると同じエラーが発生します。

それで、ついに私はそのURLをwebviewにロードし、ページのロードが終了すると、WebページのURLをメディアプレーヤーに渡しました。

    WebView webView = new WebView(SongActivity.this);
        webView.setSoundEffectsEnabled(false);
        webView.loadUrl("MY URL");
        webView.setWebViewClient(new WebViewClient() {
            public void onPageFinished(WebView view, String url) {

                try {

                playerService.startPlay(url );// this passes url to media player and url will be played using media player

                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            };

            public void onPageStarted(WebView view, String url,
                    android.graphics.Bitmap favicon) {
                System.out.println("Decoding url:" + strURl);
            };
        });

その動作は正常で、曲を再生することもできますが、これは標準的なものではありません。通常のURL(アラビア文字を含まない)の場合、メディアプレーヤーコードはうまく機能します。

標準的な解決策を教えていただけますか?

4

1 に答える 1

1

エラーコード(-1,1004)に基づくと、サーバーからの応答としてHTTP403Forbiddenを取得する可能性があります。以前にUri.encode(String) .toString()を試したことはありますmediaPlayer.setDataSource(String url)か?

https://stackoverflow.com/a/4571518/262462から:

URLEncoderクラスは使用しないでください。名前にもかかわらず、そのクラスは実際にはURLエンコードではなく、HTMLフォームエンコードを実行します。

于 2013-02-27T12:51:31.143 に答える