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