Hi, I am trying to buffer a video stream and play the video from the
buffer file, but it seems not to work. I check the logcat, it says
something about Key Dispatching Time Out problem. Does anyone know
what's wrong? The problem is probably due to CPU consuption because
this error appears after I wrong the same programme several times.
Here is my code.
package com.example.Client2;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.os.Bundle;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.webkit.URLUtil;
import android.widget.ImageButton;
import android.widget.Button;
import android.util.Log;
import android.view.View;
//import android.view.Display;
//import android.view.WindowManager;
//import android.view.ViewGroup.LayoutParams;
//import android.widget.RelativeLayout;
//import android.view.Gravity;
public class Client2 extends Activity implements
OnBufferingUpdateListener,
OnCompletionListener,
MediaPlayer.OnPreparedListener,
SurfaceHolder.Callback{
private static final String TAG=MediaPlayer;
private MediaPlayer mMediaPlayer;
private SurfaceView mPreview;
private SurfaceHolder holder;
private String path;
private int mVideoWidth;
private int mVideoHeight;
private static final int LOCAL_VIDEO = 1;
private static final int STREAM_VIDEO = 2;
//private static final int CENTER = 17;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mPreview=(SurfaceView) findViewById(R.id.surface);
holder=mPreview.getHolder();
holder.addCallback(this);
//holder.setFixedSize(30, 30);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
ImageButton Play = (ImageButton) findViewById(R.id.play);
ImageButton Pause = (ImageButton) findViewById(R.id.pause);
Button Stream = (Button) findViewById(R.id.stream);
//checkOrientation();
Play.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
playVideo(LOCAL_VIDEO);
}
});
Pause.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
mMediaPlayer.pause();
}
});
Stream.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
playVideo(STREAM_VIDEO);
}
});
}
/* private void checkOrientation()
{
WindowManager wm = getWindowManager();
Display d = wm.getDefaultDisplay();
Log.d(TAG,ok1);
LayoutParams params;
Log.d(TAG,ok2);
if (d.getWidth() d.getHeight())
{
Log.d(TAG,ok3);
//---landscape mode---
params = new RelativeLayout.LayoutParams(200,200);
Log.d(TAG,ok4);
}
else
{
//---portrait mode---
params = new RelativeLayout.LayoutParams(200,200);
}
Log.d(TAG,ok5);
mPreview.setLayoutParams(params);
}*/
private void playVideo(Integer Media)
{
try
{
switch (Media){
case LOCAL_VIDEO:
path=/sdcard/toystory3.3gp;
break;
case STREAM_VIDEO:
Log.d(TAG,check);
//path=rtsp://172.17.179.200:5544/stream;
path=http://172.17.179.200:8080/stream;;
break;
}
mMediaPlayer=new MediaPlayer();
Log.d(TAG,Here...);
//setDataSource(path);
mMediaPlayer.setDataSource(path);
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepare();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
Log.d(TAG,Debug);
mVideoWidth=mMediaPlayer.getVideoWidth();
mVideoHeight=mMediaPlayer.getVideoHeight();