Эх сурвалжийг харах

Update image of play/pause button when audio playback starts

David A. Velasco 12 жил өмнө
parent
commit
ce7f7fa48c

+ 4 - 15
src/com/owncloud/android/media/MediaService.java

@@ -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 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) {
-        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;
@@ -503,7 +500,7 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
         }
         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);
         
-        if (mMediaController != null) {
-            mMediaController.hide();
-        }
-
         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;
-        
     }
 
-    protected MediaController getMediaController() {
+    protected MediaControlView getMediaController() {
         return mMediaController;
     }
 

+ 2 - 2
src/com/owncloud/android/media/MediaServiceBinder.java

@@ -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);
     }
     
-    public void unregisterMediaController(MediaController mediaController) {
+    public void unregisterMediaController(MediaControlView mediaController) {
         if (mediaController != null && mediaController == mService.getMediaController()) {
             mService.setMediaContoller(null);
         }

+ 0 - 108
src/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -39,15 +39,12 @@ import android.accounts.AccountManager;
 import android.app.Activity;
 import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.ServiceConnection;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.IBinder;
 import android.support.v4.app.FragmentTransaction;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -58,7 +55,6 @@ import android.webkit.MimeTypeMap;
 import android.widget.Button;
 import android.widget.CheckBox;
 import android.widget.ImageView;
-import android.widget.MediaController;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 import android.widget.Toast;
@@ -73,8 +69,6 @@ import com.owncloud.android.files.services.FileObserverService;
 import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
-import com.owncloud.android.media.MediaService;
-import com.owncloud.android.media.MediaServiceBinder;
 import com.owncloud.android.network.OwnCloudClientUtils;
 import com.owncloud.android.operations.OnRemoteOperationListener;
 import com.owncloud.android.operations.RemoteOperation;
@@ -86,7 +80,6 @@ import com.owncloud.android.operations.SynchronizeFileOperation;
 import com.owncloud.android.ui.activity.ConflictsResolveActivity;
 import com.owncloud.android.ui.activity.FileDetailActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
-import com.owncloud.android.ui.activity.PreviewVideoActivity;
 import com.owncloud.android.ui.dialog.EditNameDialog;
 import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener;
 import com.owncloud.android.utils.OwnCloudVersion;
@@ -119,17 +112,12 @@ public class FileDetailFragment extends SherlockFragment implements
     private Account mAccount;
     private FileDataStorageManager mStorageManager;
     
-    //private DownloadFinishReceiver mDownloadFinishReceiver;
     private UploadFinishReceiver mUploadFinishReceiver;
     public ProgressListener mProgressListener;
     
     private Handler mHandler;
     private RemoteOperation mLastRemoteOperation;
     
-    private MediaServiceBinder mMediaServiceBinder = null;
-    private MediaController mMediaController = null;
-    private MediaServiceConnection mMediaServiceConnection = null;
-
     private static final String TAG = FileDetailFragment.class.getSimpleName();
     public static final String FTAG = "FileDetails"; 
     public static final String FTAG_CONFIRMATION = "REMOVE_CONFIRMATION_FRAGMENT";
@@ -244,23 +232,12 @@ public class FileDetailFragment extends SherlockFragment implements
     @Override
     public void onStart() {
         super.onStart();
-        if (mFile != null && mFile.isAudio()) {
-            bindMediaService();
-        }
         listenForTransferProgress();
     }
     
     @Override
     public void onResume() {
         super.onResume();
-        
-        /*
-        mDownloadFinishReceiver = new DownloadFinishReceiver();
-        IntentFilter filter = new IntentFilter(
-                FileDownloader.DOWNLOAD_FINISH_MESSAGE);
-        getActivity().registerReceiver(mDownloadFinishReceiver, filter);
-        */
-        
         mUploadFinishReceiver = new UploadFinishReceiver();
         IntentFilter filter = new IntentFilter(FileUploader.UPLOAD_FINISH_MESSAGE);
         getActivity().registerReceiver(mUploadFinishReceiver, filter);
@@ -271,14 +248,6 @@ public class FileDetailFragment extends SherlockFragment implements
     @Override
     public void onPause() {
         super.onPause();
-        
-        /*
-        if (mDownloadFinishReceiver != null) {
-            getActivity().unregisterReceiver(mDownloadFinishReceiver);
-            mDownloadFinishReceiver = null;
-        }
-        */
-        
         if (mUploadFinishReceiver != null) {
             getActivity().unregisterReceiver(mUploadFinishReceiver);
             mUploadFinishReceiver = null;
@@ -289,18 +258,6 @@ public class FileDetailFragment extends SherlockFragment implements
     @Override
     public void onStop() {
         super.onStop();
-        if (mMediaServiceConnection != null) {
-            Log.d(TAG, "Unbinding from MediaService ...");
-            if (mMediaServiceBinder != null && mMediaController != null) {
-                mMediaServiceBinder.unregisterMediaController(mMediaController);
-            }
-            getActivity().unbindService(mMediaServiceConnection);
-            mMediaServiceBinder = null;
-            if (mMediaController != null) {
-                mMediaController.hide();
-                mMediaController = null;
-            }
-        }
         leaveTransferProgress();
     }
 
@@ -410,71 +367,6 @@ public class FileDetailFragment extends SherlockFragment implements
     }
     
     
-    private void startVideoActivity() {
-        Intent i = new Intent(getActivity(), PreviewVideoActivity.class);
-        i.putExtra(PreviewVideoActivity.EXTRA_FILE, mFile);
-        i.putExtra(PreviewVideoActivity.EXTRA_ACCOUNT, mAccount);
-        startActivity(i);
-    }
-
-
-    private void bindMediaService() {
-        Log.d(TAG, "Binding to MediaService...");
-        if (mMediaServiceConnection == null) {
-            mMediaServiceConnection = new MediaServiceConnection();
-        }
-        getActivity().bindService(  new Intent(getActivity(), 
-                                    MediaService.class),
-                                    mMediaServiceConnection, 
-                                    Context.BIND_AUTO_CREATE);
-            // follow the flow in MediaServiceConnection#onServiceConnected(...)
-    }
-    
-    /** Defines callbacks for service binding, passed to bindService() */
-    private class MediaServiceConnection implements ServiceConnection {
-
-        @Override
-        public void onServiceConnected(ComponentName component, IBinder service) {
-            if (component.equals(new ComponentName(getActivity(), MediaService.class))) {
-                Log.d(TAG, "Media service connected");
-                mMediaServiceBinder = (MediaServiceBinder) service;
-                if (mMediaServiceBinder != null) {
-                    if (mMediaController == null) {
-                        mMediaController = new MediaController(getSherlockActivity());
-                    }
-                    prepareMediaController();
-                    
-                    Log.d(TAG, "Successfully bound to MediaService, MediaController ready");
-                    
-                } else {
-                    Log.e(TAG, "Unexpected response from MediaService while binding");
-                }
-            }
-        }
-        
-        private void prepareMediaController() {
-            mMediaServiceBinder.registerMediaController(mMediaController);
-            mMediaController.setMediaPlayer(mMediaServiceBinder);
-            mMediaController.setAnchorView(getView());
-            mMediaController.setEnabled(mMediaServiceBinder.isInPlaybackState());
-        }
-
-        @Override
-        public void onServiceDisconnected(ComponentName component) {
-            if (component.equals(new ComponentName(getActivity(), MediaService.class))) {
-                Log.e(TAG, "Media service suddenly disconnected");
-                if (mMediaController != null) {
-                    mMediaController.hide();
-                    mMediaController.setMediaPlayer(null);
-                    mMediaController = null;
-                }
-                mMediaServiceBinder = null;
-                mMediaServiceConnection = null;
-            }
-        }
-    }    
-
-
     /**
      * Opens mFile.
      */

+ 4 - 43
src/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -47,7 +47,6 @@ import android.view.View.OnTouchListener;
 import android.view.ViewGroup;
 import android.webkit.MimeTypeMap;
 import android.widget.ImageView;
-import android.widget.MediaController;
 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.ui.activity.TransferServiceGetter;
 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 MediaController mMediaController = null;
     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);
         
-        //updateFileDetails(false);
         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()); 
-
-        //mVideoPreview.setMediaController(mMediaController);
     }
     
 
@@ -354,7 +348,6 @@ public class PreviewMediaFragment extends SherlockFragment implements
             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);
             
-            /*
-            if (mMediaController != null) {
-                mMediaController.hide();
-            }
-            */
-            
             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) {
-                //mMediaServiceBinder.unregisterMediaController(mMediaController);
+                mMediaServiceBinder.unregisterMediaController(mMediaController);
             }
             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();
+                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) {
-                    /*
-                    if (mMediaController == null) {
-                        mMediaController = new MediaController(getSherlockActivity());
-                    }
-                    */
                     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() {
-            //mMediaServiceBinder.registerMediaController(mMediaController);
+            mMediaServiceBinder.registerMediaController(mMediaController);
             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) {
-                    //mMediaController.hide();
                     mMediaController.setMediaPlayer(null);
-                    //mMediaController = null;
                 } 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) {
-        if (mMediaController != null) {
-            //mMediaController.hide();
-        }
         if (mFile.isAudio() && stopAudio) {
             mMediaServiceBinder.pause();