Update image of play/pause button when audio playback starts
authorDavid A. Velasco <dvelasco@solidgear.es>
Tue, 12 Mar 2013 13:36:31 +0000 (14:36 +0100)
committerDavid A. Velasco <dvelasco@solidgear.es>
Tue, 12 Mar 2013 13:36:31 +0000 (14:36 +0100)
src/com/owncloud/android/media/MediaService.java
src/com/owncloud/android/media/MediaServiceBinder.java
src/com/owncloud/android/ui/fragment/FileDetailFragment.java
src/com/owncloud/android/ui/preview/PreviewMediaFragment.java

index e636516..f8e70fe 100644 (file)
@@ -133,7 +133,7 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
     private IBinder mBinder;
 
     /** Control panel shown to the user to control the playback, to register through binding */
     private IBinder mBinder;
 
     /** Control panel shown to the user to control the playback, to register through binding */
-    private MediaController mMediaController;
+    private MediaControlView mMediaController;
     
 
     
     
 
     
@@ -481,9 +481,6 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
     
     /** Called when media player is done playing current song. */
     public void onCompletion(MediaPlayer player) {
     
     /** Called when media player is done playing current song. */
     public void onCompletion(MediaPlayer player) {
-        if (mMediaController != null) {
-            mMediaController.hide();
-        }
         Toast.makeText(this, String.format(getString(R.string.media_event_done, mFile.getFileName())), Toast.LENGTH_LONG).show();
         processStopRequest(true);
         return;
         Toast.makeText(this, String.format(getString(R.string.media_event_done, mFile.getFileName())), Toast.LENGTH_LONG).show();
         processStopRequest(true);
         return;
@@ -503,7 +500,7 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
         }
         configAndStartMediaPlayer();
         if (mMediaController != null) {
         }
         configAndStartMediaPlayer();
         if (mMediaController != null) {
-            mMediaController.show(MEDIA_CONTROL_PERMANENT);
+            mMediaController.updatePausePlay();
         }
     }
     
         }
     }
     
@@ -576,10 +573,6 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
     public boolean onError(MediaPlayer mp, int what, int extra) {
         Log.e(TAG, "Error in audio playback, what = " + what + ", extra = " + extra);
         
     public boolean onError(MediaPlayer mp, int what, int extra) {
         Log.e(TAG, "Error in audio playback, what = " + what + ", extra = " + extra);
         
-        if (mMediaController != null) {
-            mMediaController.hide();
-        }
-
         String message = getMessageForMediaError(this, what, extra);
         Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
         
         String message = getMessageForMediaError(this, what, extra);
         Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
         
@@ -680,15 +673,11 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
     }
 
 
     }
 
 
-    protected void setMediaContoller(MediaController mediaController) {
-        if (mMediaController != null) {
-            mMediaController.hide();
-        }
+    protected void setMediaContoller(MediaControlView mediaController) {
         mMediaController = mediaController;
         mMediaController = mediaController;
-        
     }
 
     }
 
-    protected MediaController getMediaController() {
+    protected MediaControlView getMediaController() {
         return mMediaController;
     }
 
         return mMediaController;
     }
 
index 514f65d..4040406 100644 (file)
@@ -170,11 +170,11 @@ public class MediaServiceBinder extends Binder implements MediaController.MediaP
     }
 
 
     }
 
 
-    public void registerMediaController(MediaController mediaController) {
+    public void registerMediaController(MediaControlView mediaController) {
         mService.setMediaContoller(mediaController);
     }
     
         mService.setMediaContoller(mediaController);
     }
     
-    public void unregisterMediaController(MediaController mediaController) {
+    public void unregisterMediaController(MediaControlView mediaController) {
         if (mediaController != null && mediaController == mService.getMediaController()) {
             mService.setMediaContoller(null);
         }
         if (mediaController != null && mediaController == mService.getMediaController()) {
             mService.setMediaContoller(null);
         }
index 0ee824d..e8b897c 100644 (file)
@@ -39,15 +39,12 @@ import android.accounts.AccountManager;
 import android.app.Activity;\r
 import android.content.ActivityNotFoundException;\r
 import android.content.BroadcastReceiver;\r
 import android.app.Activity;\r
 import android.content.ActivityNotFoundException;\r
 import android.content.BroadcastReceiver;\r
-import android.content.ComponentName;\r
 import android.content.Context;\r
 import android.content.Intent;\r
 import android.content.IntentFilter;\r
 import android.content.Context;\r
 import android.content.Intent;\r
 import android.content.IntentFilter;\r
-import android.content.ServiceConnection;\r
 import android.net.Uri;\r
 import android.os.Bundle;\r
 import android.os.Handler;\r
 import android.net.Uri;\r
 import android.os.Bundle;\r
 import android.os.Handler;\r
-import android.os.IBinder;\r
 import android.support.v4.app.FragmentTransaction;\r
 import android.util.Log;\r
 import android.view.LayoutInflater;\r
 import android.support.v4.app.FragmentTransaction;\r
 import android.util.Log;\r
 import android.view.LayoutInflater;\r
@@ -58,7 +55,6 @@ import android.webkit.MimeTypeMap;
 import android.widget.Button;\r
 import android.widget.CheckBox;\r
 import android.widget.ImageView;\r
 import android.widget.Button;\r
 import android.widget.CheckBox;\r
 import android.widget.ImageView;\r
-import android.widget.MediaController;\r
 import android.widget.ProgressBar;\r
 import android.widget.TextView;\r
 import android.widget.Toast;\r
 import android.widget.ProgressBar;\r
 import android.widget.TextView;\r
 import android.widget.Toast;\r
@@ -73,8 +69,6 @@ import com.owncloud.android.files.services.FileObserverService;
 import com.owncloud.android.files.services.FileUploader;\r
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;\r
 import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;\r
 import com.owncloud.android.files.services.FileUploader;\r
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;\r
 import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;\r
-import com.owncloud.android.media.MediaService;\r
-import com.owncloud.android.media.MediaServiceBinder;\r
 import com.owncloud.android.network.OwnCloudClientUtils;\r
 import com.owncloud.android.operations.OnRemoteOperationListener;\r
 import com.owncloud.android.operations.RemoteOperation;\r
 import com.owncloud.android.network.OwnCloudClientUtils;\r
 import com.owncloud.android.operations.OnRemoteOperationListener;\r
 import com.owncloud.android.operations.RemoteOperation;\r
@@ -86,7 +80,6 @@ import com.owncloud.android.operations.SynchronizeFileOperation;
 import com.owncloud.android.ui.activity.ConflictsResolveActivity;\r
 import com.owncloud.android.ui.activity.FileDetailActivity;\r
 import com.owncloud.android.ui.activity.FileDisplayActivity;\r
 import com.owncloud.android.ui.activity.ConflictsResolveActivity;\r
 import com.owncloud.android.ui.activity.FileDetailActivity;\r
 import com.owncloud.android.ui.activity.FileDisplayActivity;\r
-import com.owncloud.android.ui.activity.PreviewVideoActivity;\r
 import com.owncloud.android.ui.dialog.EditNameDialog;\r
 import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener;\r
 import com.owncloud.android.utils.OwnCloudVersion;\r
 import com.owncloud.android.ui.dialog.EditNameDialog;\r
 import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener;\r
 import com.owncloud.android.utils.OwnCloudVersion;\r
@@ -119,17 +112,12 @@ public class FileDetailFragment extends SherlockFragment implements
     private Account mAccount;\r
     private FileDataStorageManager mStorageManager;\r
     \r
     private Account mAccount;\r
     private FileDataStorageManager mStorageManager;\r
     \r
-    //private DownloadFinishReceiver mDownloadFinishReceiver;\r
     private UploadFinishReceiver mUploadFinishReceiver;\r
     public ProgressListener mProgressListener;\r
     \r
     private Handler mHandler;\r
     private RemoteOperation mLastRemoteOperation;\r
     \r
     private UploadFinishReceiver mUploadFinishReceiver;\r
     public ProgressListener mProgressListener;\r
     \r
     private Handler mHandler;\r
     private RemoteOperation mLastRemoteOperation;\r
     \r
-    private MediaServiceBinder mMediaServiceBinder = null;\r
-    private MediaController mMediaController = null;\r
-    private MediaServiceConnection mMediaServiceConnection = null;\r
-\r
     private static final String TAG = FileDetailFragment.class.getSimpleName();\r
     public static final String FTAG = "FileDetails"; \r
     public static final String FTAG_CONFIRMATION = "REMOVE_CONFIRMATION_FRAGMENT";\r
     private static final String TAG = FileDetailFragment.class.getSimpleName();\r
     public static final String FTAG = "FileDetails"; \r
     public static final String FTAG_CONFIRMATION = "REMOVE_CONFIRMATION_FRAGMENT";\r
@@ -244,23 +232,12 @@ public class FileDetailFragment extends SherlockFragment implements
     @Override\r
     public void onStart() {\r
         super.onStart();\r
     @Override\r
     public void onStart() {\r
         super.onStart();\r
-        if (mFile != null && mFile.isAudio()) {\r
-            bindMediaService();\r
-        }\r
         listenForTransferProgress();\r
     }\r
     \r
     @Override\r
     public void onResume() {\r
         super.onResume();\r
         listenForTransferProgress();\r
     }\r
     \r
     @Override\r
     public void onResume() {\r
         super.onResume();\r
-        \r
-        /*\r
-        mDownloadFinishReceiver = new DownloadFinishReceiver();\r
-        IntentFilter filter = new IntentFilter(\r
-                FileDownloader.DOWNLOAD_FINISH_MESSAGE);\r
-        getActivity().registerReceiver(mDownloadFinishReceiver, filter);\r
-        */\r
-        \r
         mUploadFinishReceiver = new UploadFinishReceiver();\r
         IntentFilter filter = new IntentFilter(FileUploader.UPLOAD_FINISH_MESSAGE);\r
         getActivity().registerReceiver(mUploadFinishReceiver, filter);\r
         mUploadFinishReceiver = new UploadFinishReceiver();\r
         IntentFilter filter = new IntentFilter(FileUploader.UPLOAD_FINISH_MESSAGE);\r
         getActivity().registerReceiver(mUploadFinishReceiver, filter);\r
@@ -271,14 +248,6 @@ public class FileDetailFragment extends SherlockFragment implements
     @Override\r
     public void onPause() {\r
         super.onPause();\r
     @Override\r
     public void onPause() {\r
         super.onPause();\r
-        \r
-        /*\r
-        if (mDownloadFinishReceiver != null) {\r
-            getActivity().unregisterReceiver(mDownloadFinishReceiver);\r
-            mDownloadFinishReceiver = null;\r
-        }\r
-        */\r
-        \r
         if (mUploadFinishReceiver != null) {\r
             getActivity().unregisterReceiver(mUploadFinishReceiver);\r
             mUploadFinishReceiver = null;\r
         if (mUploadFinishReceiver != null) {\r
             getActivity().unregisterReceiver(mUploadFinishReceiver);\r
             mUploadFinishReceiver = null;\r
@@ -289,18 +258,6 @@ public class FileDetailFragment extends SherlockFragment implements
     @Override\r
     public void onStop() {\r
         super.onStop();\r
     @Override\r
     public void onStop() {\r
         super.onStop();\r
-        if (mMediaServiceConnection != null) {\r
-            Log.d(TAG, "Unbinding from MediaService ...");\r
-            if (mMediaServiceBinder != null && mMediaController != null) {\r
-                mMediaServiceBinder.unregisterMediaController(mMediaController);\r
-            }\r
-            getActivity().unbindService(mMediaServiceConnection);\r
-            mMediaServiceBinder = null;\r
-            if (mMediaController != null) {\r
-                mMediaController.hide();\r
-                mMediaController = null;\r
-            }\r
-        }\r
         leaveTransferProgress();\r
     }\r
 \r
         leaveTransferProgress();\r
     }\r
 \r
@@ -410,71 +367,6 @@ public class FileDetailFragment extends SherlockFragment implements
     }\r
     \r
     \r
     }\r
     \r
     \r
-    private void startVideoActivity() {\r
-        Intent i = new Intent(getActivity(), PreviewVideoActivity.class);\r
-        i.putExtra(PreviewVideoActivity.EXTRA_FILE, mFile);\r
-        i.putExtra(PreviewVideoActivity.EXTRA_ACCOUNT, mAccount);\r
-        startActivity(i);\r
-    }\r
-\r
-\r
-    private void bindMediaService() {\r
-        Log.d(TAG, "Binding to MediaService...");\r
-        if (mMediaServiceConnection == null) {\r
-            mMediaServiceConnection = new MediaServiceConnection();\r
-        }\r
-        getActivity().bindService(  new Intent(getActivity(), \r
-                                    MediaService.class),\r
-                                    mMediaServiceConnection, \r
-                                    Context.BIND_AUTO_CREATE);\r
-            // follow the flow in MediaServiceConnection#onServiceConnected(...)\r
-    }\r
-    \r
-    /** Defines callbacks for service binding, passed to bindService() */\r
-    private class MediaServiceConnection implements ServiceConnection {\r
-\r
-        @Override\r
-        public void onServiceConnected(ComponentName component, IBinder service) {\r
-            if (component.equals(new ComponentName(getActivity(), MediaService.class))) {\r
-                Log.d(TAG, "Media service connected");\r
-                mMediaServiceBinder = (MediaServiceBinder) service;\r
-                if (mMediaServiceBinder != null) {\r
-                    if (mMediaController == null) {\r
-                        mMediaController = new MediaController(getSherlockActivity());\r
-                    }\r
-                    prepareMediaController();\r
-                    \r
-                    Log.d(TAG, "Successfully bound to MediaService, MediaController ready");\r
-                    \r
-                } else {\r
-                    Log.e(TAG, "Unexpected response from MediaService while binding");\r
-                }\r
-            }\r
-        }\r
-        \r
-        private void prepareMediaController() {\r
-            mMediaServiceBinder.registerMediaController(mMediaController);\r
-            mMediaController.setMediaPlayer(mMediaServiceBinder);\r
-            mMediaController.setAnchorView(getView());\r
-            mMediaController.setEnabled(mMediaServiceBinder.isInPlaybackState());\r
-        }\r
-\r
-        @Override\r
-        public void onServiceDisconnected(ComponentName component) {\r
-            if (component.equals(new ComponentName(getActivity(), MediaService.class))) {\r
-                Log.e(TAG, "Media service suddenly disconnected");\r
-                if (mMediaController != null) {\r
-                    mMediaController.hide();\r
-                    mMediaController.setMediaPlayer(null);\r
-                    mMediaController = null;\r
-                }\r
-                mMediaServiceBinder = null;\r
-                mMediaServiceConnection = null;\r
-            }\r
-        }\r
-    }    \r
-\r
-\r
     /**\r
      * Opens mFile.\r
      */\r
     /**\r
      * Opens mFile.\r
      */\r
index cee0c60..a1e5fa3 100644 (file)
@@ -47,7 +47,6 @@ import android.view.View.OnTouchListener;
 import android.view.ViewGroup;
 import android.webkit.MimeTypeMap;
 import android.widget.ImageView;
 import android.view.ViewGroup;
 import android.webkit.MimeTypeMap;
 import android.widget.ImageView;
-import android.widget.MediaController;
 import android.widget.Toast;
 import android.widget.VideoView;
 
 import android.widget.Toast;
 import android.widget.VideoView;
 
@@ -67,7 +66,6 @@ import com.owncloud.android.operations.RemoteOperationResult;
 import com.owncloud.android.operations.RemoveFileOperation;
 import com.owncloud.android.ui.activity.FileDetailActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.operations.RemoveFileOperation;
 import com.owncloud.android.ui.activity.FileDetailActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
-import com.owncloud.android.ui.activity.TransferServiceGetter;
 import com.owncloud.android.ui.fragment.ConfirmationDialogFragment;
 import com.owncloud.android.ui.fragment.FileDetailFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.ui.fragment.ConfirmationDialogFragment;
 import com.owncloud.android.ui.fragment.FileDetailFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
@@ -105,7 +103,6 @@ public class PreviewMediaFragment extends SherlockFragment implements
     private RemoteOperation mLastRemoteOperation;
     
     private MediaServiceBinder mMediaServiceBinder = null;
     private RemoteOperation mLastRemoteOperation;
     
     private MediaServiceBinder mMediaServiceBinder = null;
-    //private MediaController mMediaController = null;
     private MediaControlView mMediaController = null;
     private MediaServiceConnection mMediaServiceConnection = null;
     private VideoHelper mVideoHelper;
     private MediaControlView mMediaController = null;
     private MediaServiceConnection mMediaServiceConnection = null;
     private VideoHelper mVideoHelper;
@@ -171,7 +168,6 @@ public class PreviewMediaFragment extends SherlockFragment implements
         
         mMediaController = (MediaControlView)mView.findViewById(R.id.media_controller);
         
         
         mMediaController = (MediaControlView)mView.findViewById(R.id.media_controller);
         
-        //updateFileDetails(false);
         return mView;
     }
     
         return mView;
     }
     
@@ -334,8 +330,6 @@ public class PreviewMediaFragment extends SherlockFragment implements
         
         // load the video file in the video player ; when done, VideoHelper#onPrepared() will be called
         mVideoPreview.setVideoPath(mFile.getStoragePath()); 
         
         // load the video file in the video player ; when done, VideoHelper#onPrepared() will be called
         mVideoPreview.setVideoPath(mFile.getStoragePath()); 
-
-        //mVideoPreview.setMediaController(mMediaController);
     }
     
 
     }
     
 
@@ -354,7 +348,6 @@ public class PreviewMediaFragment extends SherlockFragment implements
             mVideoPreview.start();
             mMediaController.setEnabled(true);
             mMediaController.updatePausePlay();
             mVideoPreview.start();
             mMediaController.setEnabled(true);
             mMediaController.updatePausePlay();
-            //mMediaController.show(MediaService.MEDIA_CONTROL_SHORT_LIFE);  
         }
         
         
         }
         
         
@@ -382,12 +375,6 @@ public class PreviewMediaFragment extends SherlockFragment implements
         public boolean onError(MediaPlayer mp, int what, int extra) {
             Log.e(TAG, "Error in video playback, what = " + what + ", extra = " + extra);
             
         public boolean onError(MediaPlayer mp, int what, int extra) {
             Log.e(TAG, "Error in video playback, what = " + what + ", extra = " + extra);
             
-            /*
-            if (mMediaController != null) {
-                mMediaController.hide();
-            }
-            */
-            
             if (mVideoPreview.getWindowToken() != null) {
                 String message = MediaService.getMessageForMediaError(getActivity(), what, extra);
                 new AlertDialog.Builder(getActivity())
             if (mVideoPreview.getWindowToken() != null) {
                 String message = MediaService.getMessageForMediaError(getActivity(), what, extra);
                 new AlertDialog.Builder(getActivity())
@@ -426,17 +413,11 @@ public class PreviewMediaFragment extends SherlockFragment implements
         if (mMediaServiceConnection != null) {
             Log.d(TAG, "Unbinding from MediaService ...");
             if (mMediaServiceBinder != null && mMediaController != null) {
         if (mMediaServiceConnection != null) {
             Log.d(TAG, "Unbinding from MediaService ...");
             if (mMediaServiceBinder != null && mMediaController != null) {
-                //mMediaServiceBinder.unregisterMediaController(mMediaController);
+                mMediaServiceBinder.unregisterMediaController(mMediaController);
             }
             getActivity().unbindService(mMediaServiceConnection);
             mMediaServiceConnection = null;
             mMediaServiceBinder = null;
             }
             getActivity().unbindService(mMediaServiceConnection);
             mMediaServiceConnection = null;
             mMediaServiceBinder = null;
-            /*
-            if (mMediaController != null) {
-                mMediaController.hide();
-                mMediaController = null;
-            }
-            */
         }
     }
     
         }
     }
     
@@ -482,18 +463,8 @@ public class PreviewMediaFragment extends SherlockFragment implements
         } else {
             if (!mMediaServiceBinder.isPlaying()) {
                 mMediaServiceBinder.start();
         } else {
             if (!mMediaServiceBinder.isPlaying()) {
                 mMediaServiceBinder.start();
+                mMediaController.updatePausePlay();
             }
             }
-            /*
-            if (!mMediaController.isShowing() && isVisible()) {
-                //mMediaController.show(MediaService.MEDIA_CONTROL_PERMANENT);
-                // TODO - fix strange bug; steps to trigger :
-                // 1. remove the "isVisible()" control
-                // 2. start the app and preview an audio file
-                // 3. exit from the app (home button, for instance) while the audio file is still being played 
-                // 4. go to notification bar and click on the "ownCloud music app" notification
-                // PUM!
-            }
-            */
         }
     }
 
         }
     }
 
@@ -519,11 +490,6 @@ public class PreviewMediaFragment extends SherlockFragment implements
                 Log.d(TAG, "Media service connected");
                 mMediaServiceBinder = (MediaServiceBinder) service;
                 if (mMediaServiceBinder != null) {
                 Log.d(TAG, "Media service connected");
                 mMediaServiceBinder = (MediaServiceBinder) service;
                 if (mMediaServiceBinder != null) {
-                    /*
-                    if (mMediaController == null) {
-                        mMediaController = new MediaController(getSherlockActivity());
-                    }
-                    */
                     prepareMediaController();
                     playAudio();    // do not wait for the touch of nobody to play audio
                     
                     prepareMediaController();
                     playAudio();    // do not wait for the touch of nobody to play audio
                     
@@ -534,9 +500,9 @@ public class PreviewMediaFragment extends SherlockFragment implements
                 }
             }
         }
                 }
             }
         }
-        
+
         private void prepareMediaController() {
         private void prepareMediaController() {
-            //mMediaServiceBinder.registerMediaController(mMediaController);
+            mMediaServiceBinder.registerMediaController(mMediaController);
             if (mMediaController != null) {
                 mMediaController.setMediaPlayer(mMediaServiceBinder);
                 mMediaController.setEnabled(true);
             if (mMediaController != null) {
                 mMediaController.setMediaPlayer(mMediaServiceBinder);
                 mMediaController.setEnabled(true);
@@ -549,9 +515,7 @@ public class PreviewMediaFragment extends SherlockFragment implements
             if (component.equals(new ComponentName(getActivity(), MediaService.class))) {
                 Log.e(TAG, "Media service suddenly disconnected");
                 if (mMediaController != null) {
             if (component.equals(new ComponentName(getActivity(), MediaService.class))) {
                 Log.e(TAG, "Media service suddenly disconnected");
                 if (mMediaController != null) {
-                    //mMediaController.hide();
                     mMediaController.setMediaPlayer(null);
                     mMediaController.setMediaPlayer(null);
-                    //mMediaController = null;
                 } else {
                     Toast.makeText(getActivity(), "No media controller to release when disconnected from media service", Toast.LENGTH_SHORT).show();
                 }
                 } else {
                     Toast.makeText(getActivity(), "No media controller to release when disconnected from media service", Toast.LENGTH_SHORT).show();
                 }
@@ -748,9 +712,6 @@ public class PreviewMediaFragment extends SherlockFragment implements
     }
 
     private void stopPreview(boolean stopAudio) {
     }
 
     private void stopPreview(boolean stopAudio) {
-        if (mMediaController != null) {
-            //mMediaController.hide();
-        }
         if (mFile.isAudio() && stopAudio) {
             mMediaServiceBinder.pause();
             
         if (mFile.isAudio() && stopAudio) {
             mMediaServiceBinder.pause();