0

i try to play video from url.i wrote some code witch can play video.now i want to use Asynctask class to load video from URl.when i used Asynctask i have RuntimeException the eclipse error is : Cannot create handler inside thread that has no called Looper.prepare() this is a my source

  public class Layout1 extends Fragment  {
public static MediaPlayer mMediaPlayer;
SurfaceView mSurfaceView;
SurfaceHolder holder;

MediaController mcontroller;
Handler handler;
String videoUrl;
SurfaceHolder.Callback callback;

private ConnectionDetector cd;

ProgressDialog dialog;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    callback = new Callback() {

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {

        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) {

            // the holder reference is already passed as arg0 here
            mMediaPlayer.setDisplay(holder);
            try {
                // progressDialog.dismiss();
                mMediaPlayer.start();
                mcontroller.setEnabled(true);

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

        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format,
                int width, int height) {

        }
    };

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_layout1, null);
    mSurfaceView = (SurfaceView) view
            .findViewById(R.id.screen_tutorial_video_surface);


    dialog = ProgressDialog.show(getActivity(), "Please Wait... ", "Loading... ");
    dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    dialog.show();
    mSurfaceView.getHolder().addCallback(callback);

    Log.e("MainActivity result is .......", MainActivity.intent_result);
    handler = new Handler();


        playVideo();


    mMediaPlayer.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer arg0) {
            if(dialog!=null)
                dialog.dismiss();
        }
    });
    return view;
}

private void playVideo() {
    mcontroller = new MediaController(getActivity());

    mcontroller.setEnabled(true);
    mMediaPlayer = MediaPlayer.create(getActivity(),
            Uri.parse(Global.yutubeDownloadUrl));

    mMediaPlayer.setScreenOnWhilePlaying(true);


    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);


}

if i call playVideo() function Instead of Asynctask Class then everythink is ok,but i want to use Asynctask now i have errror in this line

mSurfaceView.getHolder().addCallback(callback);

how i can solve my problem? video witch i must play from url is so large and i want to use Asynctask Class

user3804530
  • 95
  • 1
  • 1
  • 7

0 Answers0