hey developers I need help with this problem
On Nov 2, 8:45 pm, Dagger <[EMAIL PROTECTED]> wrote:
> I am using the 0.9 version of android SDK
> Encountering the error The application videoplayer has stopped
> unexpectedly please try again.
> This is the code which I have
> Videoplayer.java
>
> package com.android.VideoPlayer;
>
> 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.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;
>
> public class VideoPlayer 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.addCallback(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((SurfaceHolder)
> 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);
> }
> try {
> mp.prepare();
> } catch (IllegalStateException e) {
> // TODO Auto-generated catch
> block
> e.printStackTrace();
> } catch (IOException e) {
> // TODO Auto-generated catch
> block
> e.printStackTrace();
> }
> 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) {
> try{mp.stop();}
> catch(IllegalStateException f){}
> 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
> *
> * @param path
> * @throws 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 boolean onError(MediaPlayer mediaPlayer, int what, int
> extra) {
> Log.e(TAG, "onError---> what:" + what + " extra:" +
> extra);
> if (mediaPlayer != null) {
> mediaPlayer.stop();
> mediaPlayer.release();
> }
> return false;
> }
>
> 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 void surfaceCreated(SurfaceHolder surfaceholder) {
> Log.d(TAG, "surfaceCreated called");
> return;
> }
>
> 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");
> }
>
> }
>
> Manifest.xml is this
>
> <?xml version="1.0" encoding="utf-8"?>
> <manifest xmlns:android="http://schemas.android.com/apk/res/android"
> package="com.android.VideoPlayer" >
> <application android:icon="@drawable/icon" android:label="@string/
> app_name">
> <!-- <uses-library android:name="android.media" />
> <uses-library android:name="android.view" />
> <uses-library android:name="android.widget" />-->
> <activity android:name=".VideoPlayer"
> android:label="@string/app_name">
> <intent-filter>
> <action android:name="android.intent.action.MAIN" />
> <category
> android:name="android.intent.category.LAUNCHER" />
> </intent-filter>
> </activity>
> </application>
> </manifest>
>
> Main.xml
>
> <?xml version="1.0" encoding="utf-8"?>
> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/
> android"
> android:orientation="vertical"
> android:layout_width="fill_parent"
> android:layout_height="fill_parent"
> >
> <TextView
> android:layout_width="fill_parent"
> android:layout_height="wrap_content"
> android:text="@string/hello"
> />
> <SurfaceView
> android:id="@+id/surface"
> />
> <EditText
> android:id="@+id/path"
> />
> <ImageButton
> android:id="@+id/play"
> />
> <ImageButton
> android:id="@+id/pause"
> />
> <ImageButton
> android:id="@+id/reset"
> />
> <ImageButton
> android:id="@+id/stop"
> />
>
> </LinearLayout>
>
> Please help me out I am new to android.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---