Hi
When i click the playvideo button.I got "Argument must not be null"
Error,Heres my code
*
package* com.IW.*VedioPlayer*;
*im**port* android.app.Activity;
*
import* android.graphics.PixelFormat;
*
import* android.media.MediaPlayer;
*
import* android.media.MediaPlayer.OnBufferingUpdateListener;
*
import* android.media.MediaPlayer.OnCompletionListener;
*
import* android.media.MediaPlayer.OnErrorListener;
*
import* android.os.Bundle;
*
import* android.util.Log;
*
import* android.view.SurfaceHolder;
*
import* android.view.SurfaceView;
*
import* android.view.View;
*
import* android.webkit.URLUtil;
*
import* android.widget.EditText;
*
import* android.widget.ImageButton;
*
import* java.io.File;
*
import* java.io.FileOutputStream;
*
import* java.io.IOException;
*
import* java.io.InputStream;
*
import* java.net.URL;
*
import* java.net.URLConnection;
*
public* *class* VedioPlayer *extends* Activity *implements* OnErrorListener,
OnBufferingUpdateListener, OnCompletionListener,
MediaPlayer.OnPreparedListener, SurfaceHolder.Callback {
*private* *static* *final* String *TAG* = "VideoPlayer";
*private* MediaPlayer mp;
*private* SurfaceView mPreview;
*private* EditText mPath;
*private* SurfaceHolder holder;
*private* ImageButton mPlay;
*private* ImageButton mPause;
*private* ImageButton mReset;
*private* ImageButton mStop;
*private* String current;
/**
* Called when the activity is first created.
*/
*public* *void* onCreate(Bundle icicle) {
*super*.onCreate(icicle);
setContentView(R.layout.*main*);
// Set up the play/pause/reset/stop buttons
mPreview = (SurfaceView) findViewById(R.id.*surface*);
mPath = (EditText) findViewById(R.id.*path*);
mPlay = (ImageButton) findViewById(R.id.*play*);
mPause = (ImageButton) findViewById(R.id.*pause*);
mReset = (ImageButton) findViewById(R.id.*reset*);
mStop = (ImageButton) findViewById(R.id.*stop*);
mPlay.setOnClickListener(*new* View.OnClickListener() {
*public* *void* onClick(View view) {
playVideo();
}
});
mPause.setOnClickListener(*new* View.OnClickListener() {
*public* *void* onClick(View view) {
*if* (mp != *null*) {
mp.pause();
}
}
});
mReset.setOnClickListener(*new* View.OnClickListener() {
*public* *void* onClick(View view) {
*if* (mp != *null*) {
mp.seekTo(0);
}
}
});
mStop.setOnClickListener(*new* View.OnClickListener() {
*public* *void* onClick(View view) {
*if* (mp != *null*) {
mp.stop();
mp.release();
}
}
});
// Set the transparency
getWindow().setFormat(PixelFormat.*TRANSPARENT*);
// Set a size for the video screen
holder = mPreview.getHolder();
holder.setCallback(*this*);
holder.setFixedSize(400, 300);
}
*private* *void* playVideo() {
*try* {
*final* String path = mPath.getText().toString();
Log.*v*(*TAG*, "path: " + path);
// If the path has not changed, just start the media player
*if* (path.equals(current) && mp != *null*) {
mp.start();
*return*;
}
current = path;
// Create a new media player and set the listeners
mp = *new* MediaPlayer();
mp.setOnErrorListener(*this*);
mp.setOnBufferingUpdateListener(*this*);
mp.setOnCompletionListener(*this*);
mp.setOnPreparedListener(*this*);
mp.setAudioStreamType(2);
// Set the surface for the video output
mp.setDisplay(mPreview.getHolder().getSurface());
// Set the data source in another thread
// which actually downloads the mp3 or videos
// to a temporary location
Runnable r = *new* Runnable() {
*public* *void* run() {
*try* {
setDataSource(path);
} *catch* (IOException e) {
Log.*e*(*TAG*, e.getMessage(), e);
}
mp.prepare();
Log.*v*(*TAG*, "Duration: ===>" + mp.getDuration());
mp.start();
}
};
*new* Thread(r).start();
} *catch* (Exception e) {
Log.*e*(*TAG*, "error: " + e.getMessage(), e);
*if* (mp != *null*) {
mp.stop();
mp.release();
}
}
}
/**
* If the user has specified a local url, then we download the
* url stream to a temporary location and then call the setDataSource
* for that local file
*
* [EMAIL PROTECTED] path
* [EMAIL PROTECTED] IOException
*/
*private* *void* setDataSource(String path) *throws* IOException {
*if* (!URLUtil.*isNetworkUrl*(path)) {
mp.setDataSource(path);
} *else* {
URL url = *new* URL(path);
URLConnection cn = url.openConnection();
cn.connect();
InputStream stream = cn.getInputStream();
*if* (stream == *null*)
*throw* *new* RuntimeException("stream is null");
File temp = File.*createTempFile*("mediaplayertmp", "dat");
String tempPath = temp.getAbsolutePath();
FileOutputStream out = *new* FileOutputStream(temp);
*byte* buf[] = *new* *byte*[128];
*do* {
*int* numread = stream.read(buf);
*if* (numread <= 0)
*break*;
out.write(buf, 0, numread);
} *while* (*true*);
mp.setDataSource(tempPath);
*try* {
stream.close();
}
*catch* (IOException ex) {
Log.*e*(*TAG*, "error: " + ex.getMessage(), ex);
}
}
}
*public* *void* onError(MediaPlayer mediaPlayer, *int* what, *int* extra) {
Log.*e*(*TAG*, "onError---> what:" + what + " extra:" + extra);
*if* (mediaPlayer != *null*) {
mediaPlayer.stop();
mediaPlayer.release();
}
}
*public* *void* onBufferingUpdate(MediaPlayer arg0, *int* percent) {
Log.*d*(*TAG*, "onBufferingUpdate called ---> percent:" + percent);
}
*public* *void* onCompletion(MediaPlayer arg0) {
Log.*d*(*TAG*, "onCompletion called");
}
*public* *void* onPrepared(MediaPlayer mediaplayer) {
Log.*d*(*TAG*, "onPrepared called");
}
*public* *boolean* surfaceCreated(SurfaceHolder surfaceholder) {
Log.*d*(*TAG*, "surfaceCreated called");
*return* *true*;
}
*public* *void* surfaceChanged(SurfaceHolder surfaceholder, *int* i, *int*j,
*int* k) {
Log.*d*(*TAG*, "surfaceChanged called");
}
*public* *void* surfaceDestroyed(SurfaceHolder surfaceholder) {
Log.*d*(*TAG*, "surfaceDestroyed called");
}
}
Thanks
judy
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---