android无线电流媒体背景和进度对话框

android无线电流媒体背景和进度对话框,android,audio-streaming,progressdialog,Android,Audio Streaming,Progressdialog,我正在android中开发一个无线电应用程序,它将从url流式传输,并在后台显示进度对话框加载流,但显示ANR。我正在使用mediaplayer的服务启动和停止。需要帮助。我已使用asynctask,但无法获得解决方案。 主课 button_Play.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new DownloadTas

我正在android中开发一个无线电应用程序,它将从url流式传输,并在后台显示进度对话框加载流,但显示ANR。我正在使用mediaplayer的服务启动和停止。需要帮助。我已使用asynctask,但无法获得解决方案。 主课

button_Play.setOnClickListener(new View.OnClickListener() 
{               
@Override
public void onClick(View v) 
{
    new DownloadTask().execute();
}
});


class DownloadTask extends AsyncTask<Void, Void, Void> 
{
@Override
protected void onPreExecute()
{
    progressDialog = ProgressDialog.show(MainActivity.this , "Android Streaming
Player" , "Connecting to Stream..." , true , false);

Log.d("onPreExecute()----->" , "MainActivity.class");

super.onPreExecute();

}

@Override
protected Void doInBackground(Void... params)
{

Log.d("doInBackground()----->" , "MainActivity.class");

startService(new Intent(MainActivity.this , RadioService.class));

return null;

}

@Override
protected void onPostExecute(Void result) 
{

Log.d("onPostExecute()----->" , "MainActivity.class");

progressDialog.dismiss();

super.onPostExecute(result);

}


}    


Here is service class:

RadioService.class

@Override
public int onStartCommand(Intent intent, int flags, int startId) 
{
Log.d("onStartCommand------->", "RadioService.class");

try 
{
Log.d("MediaPlayer--->TRY BLOCK", "MediaPlayer");

URL url2 = new URL("http://141.139.35.23:8000");

URLConnection urlConnection = url2.openConnection();

player.setDataSource(urlConnection.getURL().toString());

player.setAudioStreamType(AudioManager.STREAM_MUSIC);

player.prepare();

Log.d("MediaPlayer--->TRY BLOCK AFTER ASYNC", "MediaPlayer");

player.setOnPreparedListener(new OnPreparedListener()
{

@Override
public void onPrepared(MediaPlayer mp) 
{

Log.d("MediaPlayer--->ON PREPARED BEGINS", "MediaPlayer");

//mp.setOnErrorListener(MainActivity.this);

mp.start();

//mp.setOnErrorListener(this);

mp.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);

                    Toast.makeText(getApplicationContext() , "Streaming started " , Toast.LENGTH_SHORT).show();

                    Log.d("MediaPlayer--->ON PREPARED ENDS", "MediaPlayer");

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



        return START_STICKY;
        //return super.onStartCommand(intent, flags, startId);
}
按钮\u Play.setOnClickListener(新视图.OnClickListener()
{               
@凌驾
公共void onClick(视图v)
{
新建下载任务().execute();
}
});
类DownloadTask扩展了AsyncTask
{
@凌驾
受保护的void onPreExecute()
{
progressDialog=progressDialog.show(MainActivity.this,“Android流媒体
播放器“,”连接到流“,”对,错);
Log.d(“onPreExecute()-->”,“MainActivity.class”);
super.onPreExecute();
}
@凌驾
受保护的Void doInBackground(Void…参数)
{
Log.d(“doInBackground()-->”,“MainActivity.class”);
startService(新意图(MainActivity.this、RadioService.class));
返回null;
}
@凌驾
受保护的void onPostExecute(void结果)
{
Log.d(“onPostExecute()------>”,“MainActivity.class”);
progressDialog.disclose();
super.onPostExecute(结果);
}
}    
以下是服务级别:
无线电服务类
@凌驾
公共int onStartCommand(Intent Intent、int标志、int startId)
{
Log.d(“onStartCommand---------------->,“RadioService.class”);
尝试
{
Log.d(“MediaPlayer-->TRY BLOCK”、“MediaPlayer”);
URL url2=新URL(“http://141.139.35.23:8000");
URLConnection URLConnection=url2.openConnection();
player.setDataSource(urlConnection.getURL().toString());
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.prepare();
Log.d(“MediaPlayer-->TRY BLOCK AFTER ASYNC”,“MediaPlayer”);
player.setOnPreparedListener(新的OnPreparedListener()
{
@凌驾
已准备好公开作废(MediaPlayer mp)
{
Log.d(“MediaPlayer-->ON PREPARED start”,“MediaPlayer”);
//mp.setOneErrorListener(MainActivity.this);
mp.start();
//mp.SetOneRorListener(本);
mp.setWakeMode(getApplicationContext(),PowerManager.PARTIAL_WAKE_LOCK);
Toast.makeText(getApplicationContext(),“流媒体已开始”,Toast.LENGTH_SHORT.show();
Log.d(“MediaPlayer-->ON PREPARED end”,“MediaPlayer”);
}
});
}捕获(例外e)
{
Log.i(“异常”,“流媒体播放器中的异常e=“+e”);
} 
返回开始时间;
//返回super.onStartCommand(intent、flags、startId);
}
类加载扩展了异步任务{
受保护的void onPreExecute(){
loadDialog.show();
}
@凌驾
受保护对象doInBackground(对象…arg0){
if(rFlag==false){
mediaPlayer=新的mediaPlayer();
试一试{
url=”rtsp://ra.dio";
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.start();
}捕获(例外e){
loadDialog.disclose();
errmsg=“error”;
//TODO:处理异常
}           
while(rFlag==false){
setOnBufferingUpdateListener(新的OnBufferingUpdateListener(){
public void onBufferingUpdate(MediaPlayer arg0,int arg1){
//TODO自动生成的方法存根
如果(arg1>=98){
loadDialog.disclose();
rFlag=true;
}
}
});
}
}
else if(rFlag==true){
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer=null;
rFlag=false;
}
返回null;
}
@凌驾
受保护的void onPostExecute(对象结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
//装载
}
}
class Loading extends AsyncTask<Object, Object, Object>{
    protected void onPreExecute(){
        loadDialog.show();
    }
    @Override
    protected Object doInBackground(Object... arg0) {
        if(rFlag==false){
            mediaPlayer = new MediaPlayer();
            try{
                url = "rtsp://ra.dio";
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                mediaPlayer.setDataSource(url);
                mediaPlayer.prepare();
                mediaPlayer.start();
            } catch (Exception e) {
                loadDialog.dismiss();
                errmsg = "error";
                // TODO: handle exception
            }           
            while(rFlag==false){

                mediaPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {

                    public void onBufferingUpdate(MediaPlayer arg0, int arg1) {
                        // TODO Auto-generated method stub
                        if(arg1 >= 98){
                            loadDialog.dismiss();
                            rFlag=true;
                        }
                    }
                });

            }
        }
        else if(rFlag==true){
            mediaPlayer.stop();
            mediaPlayer.release();
            mediaPlayer=null;
            rFlag=false;
        }
        return null;
    }

    @Override
    protected void onPostExecute(Object result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        // loaded
    }

}