private IBinder mBinder;
/** Control panel shown to the user to control the playback, to register through binding */
- private MediaController mMediaController;
+ private MediaControlView mMediaController;
/** 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;
}
configAndStartMediaPlayer();
if (mMediaController != null) {
- mMediaController.show(MEDIA_CONTROL_PERMANENT);
+ mMediaController.updatePausePlay();
}
}
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();
}
- 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;
}
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.ServiceConnection;\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.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 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.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
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 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
@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
- \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
@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
@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
}\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
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 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;
private RemoteOperation mLastRemoteOperation;
private MediaServiceBinder mMediaServiceBinder = null;
- //private MediaController mMediaController = null;
private MediaControlView mMediaController = null;
private MediaServiceConnection mMediaServiceConnection = null;
private VideoHelper mVideoHelper;
mMediaController = (MediaControlView)mView.findViewById(R.id.media_controller);
- //updateFileDetails(false);
return mView;
}
// load the video file in the video player ; when done, VideoHelper#onPrepared() will be called
mVideoPreview.setVideoPath(mFile.getStoragePath());
-
- //mVideoPreview.setMediaController(mMediaController);
}
mVideoPreview.start();
mMediaController.setEnabled(true);
mMediaController.updatePausePlay();
- //mMediaController.show(MediaService.MEDIA_CONTROL_SHORT_LIFE);
}
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 (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;
- }
- */
}
}
} 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!
- }
- */
}
}
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
}
}
}
-
+
private void prepareMediaController() {
- //mMediaServiceBinder.registerMediaController(mMediaController);
+ mMediaServiceBinder.registerMediaController(mMediaController);
if (mMediaController != null) {
mMediaController.setMediaPlayer(mMediaServiceBinder);
mMediaController.setEnabled(true);
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();
}
}
private void stopPreview(boolean stopAudio) {
- if (mMediaController != null) {
- //mMediaController.hide();
- }
if (mFile.isAudio() && stopAudio) {
mMediaServiceBinder.pause();