【问题标题】:Playing a URL using WebView in android在android中使用WebView播放URL
【发布时间】:2011-11-16 05:06:34
【问题描述】:

我只需要知道如何在 android 中播放下面的链接...我在模拟器中尝试过它的工作,但在设备上没有尝试为什么.....感谢帮助......

   http://stream.radiosai.net:8002/

【问题讨论】:

  • 过去的一些代码供您参考。
  • 海索尼我无法发布代码...你能帮我怎么玩这个网址........
  • 你为什么不试试媒体播放器..
  • 是的,我尝试使用媒体播放器......但不工作......你可以发布任何在线音频流的示例......

标签: android url webview


【解决方案1】:

我已经在我的应用程序中实现了播放流音频。我直接在此处粘贴此代码。删除不必要的数据并使用它。我已经在其中测试了您的链接,对我有用。

import java.io.IOException;

import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.drawable.AnimationDrawable;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnErrorListener;
import android.media.MediaPlayer.OnInfoListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.ToggleButton;

public class StreamAudio extends Activity implements OnPreparedListener,
         OnErrorListener {

    MediaPlayer mp;
    private ToggleButton btn;
    private ImageView img;
    private boolean flag = false;
    AnimationDrawable frameAnimation;
    ProgressDialog progress;


     String url="http://stream.radiosai.net:8002/";

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);

        btn = (ToggleButton) findViewById(R.id.play);
        img = (ImageView) findViewById(R.id.radio_image);

        img.setBackgroundResource(R.drawable.frames);
        frameAnimation = (AnimationDrawable) img.getBackground();

        mp = new MediaPlayer();

        progress=ProgressDialog.show(this, null ,"Loading...",false,true);

        Runnable r=new Runnable() {

            @Override
            public void run() {
                setPlayBack();
            }
        };
        Thread th=new Thread(r);
        th.start();
            mp.setOnPreparedListener(this);
            //mp.setOnBufferingUpdateListener(this);
            mp.setOnErrorListener(this);
        //  mp.setOnInfoListener(this);
            btn.setOnCheckedChangeListener(new OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                    if(flag)
                    {

                        if(!isChecked)
                        {
                                btn.setBackgroundResource(R.drawable.btn_stop);
                                mp.start();
                                frameAnimation.start();
                        }

                        else
                        {
                            btn.setBackgroundResource(R.drawable.btn_play);
                            frameAnimation.stop();
                            mp.stop();
                            mp.reset();
                            flag=false;
                        }
                    }
                    else
                    {
                        btn.setChecked(false);

                        progress=ProgressDialog.show(StreamAudio.this, null ,"Loading...",false,false);
                        Runnable r=new Runnable() {

                            @Override
                            public void run() {
                                // TODO Auto-generated method stub
                                setPlayBack();
                            }
                        };
                        Thread th=new Thread(r);
                        th.start();
                    }

                }
            });
    }

    @Override
    protected void onDestroy() {

        super.onDestroy();
        mp.release();

    }

    @Override
    public void onPrepared(MediaPlayer mp) {

        flag = true;
        handler.sendEmptyMessage(0);
    }


    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {

        mp.release();
        return false;
    }
        private void setPlayBack()
        {
            mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
                try {
                    mp.setDataSource(url);
                } catch (IllegalArgumentException e1) {
                    e1.printStackTrace();
                } catch (IllegalStateException e1) {
                    e1.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                mp.prepareAsync();
        }
        private Handler handler=new Handler(){
            @Override
            public void handleMessage(Message msg) {
                progress.dismiss();
                btn.setBackgroundResource(R.drawable.btn_stop);
                frameAnimation.start();
                mp.start();
            }
        };
}

ma​​in.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">


    <LinearLayout android:layout_alignParentBottom="true"
        android:gravity="center" android:layout_width="fill_parent"
        android:background="@drawable/bottom_bar" android:layout_height="wrap_content">

        <ToggleButton android:background="@drawable/btn_stop" android:checked="false" android:id="@+id/play" android:textOff="" android:textOn=""
            android:layout_width="wrap_content" android:layout_height="wrap_content"></ToggleButton>
    </LinearLayout>
    <ImageView android:id="@+id/radio_image"
        android:layout_height="wrap_content" android:layout_width="wrap_content"
        android:layout_centerInParent="true"></ImageView>

</RelativeLayout>

【讨论】:

  • 我试过了,但我得到了这些异常.....bufferCount (4) 太小,增加到 12 11-16 15:15:35.384: ERROR/AwesomePlayer(34): Not发送缓冲状态,因为持续时间未知。
  • 实际上使用 player.prepare() 而不是 player.prepareAsync() 可能会出现此问题。但实际上我将代码正确地放在上面。它对我来说非常有用。请点击此处的链接:stackoverflow.com/questions/3357923/…
  • 是的,它只是正确的......你知道任何其他原因......y我们需要切换按钮......
  • 其实不需要,我也在2.2emulator中测试过,logcat显示错误,但没有强制关闭。但是它正在播放。
  • 它在模拟器上运行......但没有设备......在设备加载进度中只显示............没有播放
猜你喜欢
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多