繁体   English   中英

无法在MediaPlayer中播放带有特殊字符的URL

[英]Unable to play URL with Special character in MediaPlayer

我正在尝试使用特殊键字符url播放MediaPlayer,但无法播放并收到错误代码。 尽管我也使用直接输入Url播放它,但仍然出现错误。

 //// Input
String urlStr = "http://mydomain/php/playfile.php?src=7580&dst=7711&calldate=2014-04-09%2015:23:19&amaflags=3&duration=294&billsec=289&lastapp=Dial&mp3file=exten-7711-7580-20140409-152319-1397042599.3211.mp3"

URL localurl = new URL(urlStr);
            URI uri = new URI(localurl.getProtocol(), localurl.getUserInfo(),
                    localurl.getHost(), localurl.getPort(), localurl.getPath(),
                    localurl.getQuery(), localurl.getRef());
            localurl = uri.toURL();


            Log.d("localurl ", localurl.toString());
            Log.d("localurl.getQuery()", localurl.getQuery());

            String queryStr = localurl.getQuery();
            String pathStr = localurl.getPath();

            Log.d("localurl.getPath()", localurl.getPath());
            Log.d("uri.toASCIIString()", uri.toASCIIString());

            String encodeUrlStr = URLEncoder.encode(queryStr, "UTF-8");

            Log.d("encodeUrlStr", encodeUrlStr);


            String urlToplay = String.format("http://%s%s?%s", MasterView.mPreferences.getString("DomainName", ""),pathStr,encodeUrlStr);

            Log.d("url to play", urlToplay);



//// Output
http://mydomain/php/playfile.php?src%3D7580%26dst%3D7711%26calldate%3D2014-04-09%252015%3A23%3A19%26amaflags%3D3%26duration%3D294%26billsec%3D289%26lastapp%3DDial%26mp3file%3Dexten-7711-7580-20140409-152319-1397042599.3211.mp3

并在MediaPlayer上播放音频流网址

 try {


                mediaplayer = new MediaPlayer();
                mediaplayer.reset();
                mediaplayer.setDataSource(urlToplay);
                mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                // mediaplayer.prepare();

                mediaplayer
                        .setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                            public void onPrepared(MediaPlayer mp) {
                                mediaplayer.start();
                            }
                        });
                mediaplayer.prepareAsync();

            } catch (Exception e) {

                Log.i("Exception", "Exception in streaming mediaplayer e = "
                        + e);
                e.printStackTrace();
            }

我认为您在Mediaplayer设置上存在问题。 这是我的方法:

 mediaPlayer = new MediaPlayer();
    mediaPlayer.setDataSource(MP3_URL);
    mediaPlayer.prepareAsync();
    mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
                mediaPlayer.stop();
                mediaPlayer.reset();
        }
});
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {

    @Override
    public void onPrepared(MediaPlayer mp) {
      mediaPlayer.start();
            }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM