如何从给定的Web代理中开发Android中的实时流媒体广播应用程序



我正在开发Android中的实时流媒体广播应用程序,我有一个包含.pls文件的链接,单击链接时,它将下载为.pls文件。从Web代理到我的Android应用程序。服务器运行24x7。我尝试了一些编码,但是我遇到了一些错误,但任何人都可以在这里帮助我。

在下面给我的logcat

01-31 01:33:43.209: E/MediaPlayer(1216): error (1, -2147483648)
01-31 01:33:43.309: E/MediaPlayer(1216): Error (1,-2147483648)
01-31 01:33:45.549: I/Choreographer(1216): Skipped 252 frames!  The application may be doing too much work on its main thread.
01-31 01:33:45.699: I/Choreographer(1216): Skipped 32 frames!  The application may be doing too much work on its main thread.

Java类:

import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
public class MainActivity extends Activity implements OnClickListener {
    private ProgressBar playSeekBar;
    private Button buttonPlay;
    private Button buttonStopPlay;
    private MediaPlayer player;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initializeUIElements();
        try {
            initializeMediaPlayer();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    private void initializeUIElements() {
        playSeekBar = (ProgressBar) findViewById(R.id.progressBar1);
        playSeekBar.setMax(100);
        playSeekBar.setVisibility(View.INVISIBLE);
        buttonPlay = (Button) findViewById(R.id.button1);
        buttonPlay.setOnClickListener(this);
        buttonStopPlay = (Button) findViewById(R.id.button2);
        buttonStopPlay.setEnabled(false);
        buttonStopPlay.setOnClickListener(this);
    }
    public void onClick(View v) {
        if (v == buttonPlay) {
            startPlaying();
        } else if (v == buttonStopPlay) {
            stopPlaying();
        }
    }
    private void startPlaying() {
        buttonStopPlay.setEnabled(true);
        buttonPlay.setEnabled(false);
        playSeekBar.setVisibility(View.VISIBLE);
        player.prepareAsync();
        player.setOnPreparedListener(new OnPreparedListener() {
            public void onPrepared(MediaPlayer mp) {
                player.start();
            }
        });
    }
    private void stopPlaying() {
        if (player.isPlaying()) {
            player.stop();
            player.release();
            try {
                initializeMediaPlayer();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        buttonPlay.setEnabled(true);
        buttonStopPlay.setEnabled(false);
        playSeekBar.setVisibility(View.INVISIBLE);
    }
    private void initializeMediaPlayer() throws IOException {
        player = new MediaPlayer();
        try {
          player.setDataSource("//.pls file link");
        //
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        }
        player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
            public void onBufferingUpdate(MediaPlayer mp, int percent) {
                playSeekBar.setSecondaryProgress(percent);
                Log.i("Buffering", "" + percent);
            }
        });
    }
    @Override
    protected void onPause() {
        super.onPause();
        if (player.isPlaying()) {
            player.stop();
        }
    }
}

The application may be doing too much work on its main thread.

我不确定,但是这是您问题的原因:

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

您正在为玩家多次设置侦听器;每次单击按钮。这应该在onCreate()

最新更新