diff --git a/core/java/android/widget/VideoView.java b/core/java/android/widget/VideoView.java
index 6d3a2d3..20dd8a6 100644
--- a/core/java/android/widget/VideoView.java
+++ b/core/java/android/widget/VideoView.java
@@ -55,6 +55,7 @@
     private SurfaceHolder mSurfaceHolder = null;
     private MediaPlayer mMediaPlayer = null;
     private boolean     mIsPrepared;
+    private boolean     mIsPlaybackCompleted;
     private int         mVideoWidth;
     private int         mVideoHeight;
     private int         mSurfaceWidth;
@@ -260,7 +261,7 @@
                         mSeekWhenPrepared = 0;
                     }
                     if (mStartWhenPrepared) {
-                        mMediaPlayer.start();
+                        start();
                         mStartWhenPrepared = false;
                         if (mMediaController != null) {
                             mMediaController.show();
@@ -281,7 +282,7 @@
                     mSeekWhenPrepared = 0;
                 }
                 if (mStartWhenPrepared) {
-                    mMediaPlayer.start();
+                    start();
                     mStartWhenPrepared = false;
                 }
             }
@@ -291,6 +292,7 @@
     private MediaPlayer.OnCompletionListener mCompletionListener =
         new MediaPlayer.OnCompletionListener() {
         public void onCompletion(MediaPlayer mp) {
+            mIsPlaybackCompleted = true;
             if (mMediaController != null) {
                 mMediaController.hide();
             }
@@ -405,7 +407,9 @@
                     mMediaPlayer.seekTo(mSeekWhenPrepared);
                     mSeekWhenPrepared = 0;
                 }
-                mMediaPlayer.start();
+                if (!mIsPlaybackCompleted) {
+                    start();
+                } 
                 if (mMediaController != null) {
                     mMediaController.show();
                 }
@@ -490,6 +494,7 @@
     }
     
     public void start() {
+        mIsPlaybackCompleted = false;
         if (mMediaPlayer != null && mIsPrepared) {
                 mMediaPlayer.start();
                 mStartWhenPrepared = false;
