Hi Judy,

You need to install an sdcard and upload test mp4 files to it, next change
the code to use those test files, and then run the sample code.

Thanks,
Megha

On Mon, Apr 21, 2008 at 2:47 AM, Analdin Judy <[EMAIL PROTECTED]> wrote:

> 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 android-beginners@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to