X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/f88f81e906629f244999bfe85fbfeec90985421e..7656cff3bbb92aefbbe01d59f746d5e7f3bd9445:/src/com/owncloud/android/ui/preview/PreviewVideoActivity.java diff --git a/src/com/owncloud/android/ui/preview/PreviewVideoActivity.java b/src/com/owncloud/android/ui/preview/PreviewVideoActivity.java deleted file mode 100644 index 0cab2e2b..00000000 --- a/src/com/owncloud/android/ui/preview/PreviewVideoActivity.java +++ /dev/null @@ -1,239 +0,0 @@ -/* ownCloud Android client application - * Copyright (C) 2012-2013 ownCloud Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package com.owncloud.android.ui.preview; - -import android.accounts.Account; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.media.MediaPlayer; -import android.media.MediaPlayer.OnCompletionListener; -import android.media.MediaPlayer.OnErrorListener; -import android.media.MediaPlayer.OnPreparedListener; -import android.net.Uri; -import android.os.Bundle; -import android.widget.MediaController; -import android.widget.VideoView; - -import com.owncloud.android.Log_OC; -import com.owncloud.android.R; -import com.owncloud.android.datamodel.DataStorageManager; -import com.owncloud.android.datamodel.FileDataStorageManager; -import com.owncloud.android.authentication.AccountUtils; -import com.owncloud.android.authentication.AccountUtils.AccountNotFoundException; -import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.media.MediaService; -import com.owncloud.android.ui.activity.FileActivity; - -/** - * Activity implementing a basic video player. - * - * Used as an utility to preview video files contained in an ownCloud account. - * - * Currently, it always plays in landscape mode, full screen. When the playback ends, - * the activity is finished. - * - * @author David A. Velasco - */ -public class PreviewVideoActivity extends FileActivity implements OnCompletionListener, OnPreparedListener, OnErrorListener { - - /** Key to receive a flag signaling if the video should be started immediately */ - public static final String EXTRA_AUTOPLAY = "AUTOPLAY"; - - /** Key to receive the position of the playback where the video should be put at start */ - public static final String EXTRA_START_POSITION = "START_POSITION"; - - private static final String TAG = PreviewVideoActivity.class.getSimpleName(); - - private DataStorageManager mStorageManager; - - private int mSavedPlaybackPosition; // in the unit time handled by MediaPlayer.getCurrentPosition() - private boolean mAutoplay; // when 'true', the playback starts immediately with the activity - private VideoView mVideoPlayer; // view to play the file; both performs and show the playback - private MediaController mMediaController; // panel control used by the user to control the playback - - /** - * Called when the activity is first created. - * - * Searches for an {@link OCFile} and ownCloud {@link Account} holding it in the starting {@link Intent}. - * - * The {@link Account} is unnecessary if the file is downloaded; else, the {@link Account} is used to - * try to stream the remote file - TODO get the streaming works - * - * {@inheritDoc} - */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - Log_OC.e(TAG, "ACTIVITY\t\tonCreate"); - - setContentView(R.layout.video_layout); - - if (savedInstanceState == null) { - Bundle extras = getIntent().getExtras(); - mSavedPlaybackPosition = extras.getInt(EXTRA_START_POSITION); - mAutoplay = extras.getBoolean(EXTRA_AUTOPLAY); - - } else { - mSavedPlaybackPosition = savedInstanceState.getInt(EXTRA_START_POSITION); - mAutoplay = savedInstanceState.getBoolean(EXTRA_AUTOPLAY); - } - - mVideoPlayer = (VideoView) findViewById(R.id.videoPlayer); - - // set listeners to get more contol on the playback - mVideoPlayer.setOnPreparedListener(this); - mVideoPlayer.setOnCompletionListener(this); - mVideoPlayer.setOnErrorListener(this); - - // keep the screen on while the playback is performed (prevents screen off by battery save) - mVideoPlayer.setKeepScreenOn(true); - } - - - /** - * {@inheritDoc} - */ - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - Log_OC.e(TAG, "ACTIVITY\t\tonSaveInstanceState"); - outState.putInt(PreviewVideoActivity.EXTRA_START_POSITION, mVideoPlayer.getCurrentPosition()); - outState.putBoolean(PreviewVideoActivity.EXTRA_AUTOPLAY , mVideoPlayer.isPlaying()); - } - - - @Override - public void onBackPressed() { - Log_OC.e(TAG, "ACTIVTIY\t\tonBackPressed"); - Intent i = new Intent(); - i.putExtra(EXTRA_AUTOPLAY, mVideoPlayer.isPlaying()); - i.putExtra(EXTRA_START_POSITION, mVideoPlayer.getCurrentPosition()); - setResult(RESULT_OK, i); - super.onBackPressed(); - } - - - /** - * Called when the file is ready to be played. - * - * Just starts the playback. - * - * @param mp {@link MediaPlayer} instance performing the playback. - */ - @Override - public void onPrepared(MediaPlayer mp) { - Log_OC.e(TAG, "ACTIVITY\t\tonPrepare"); - mVideoPlayer.seekTo(mSavedPlaybackPosition); - if (mAutoplay) { - mVideoPlayer.start(); - } - mMediaController.show(5000); - } - - - /** - * Called when the file is finished playing. - * - * Rewinds the video - * - * @param mp {@link MediaPlayer} instance performing the playback. - */ - @Override - public void onCompletion(MediaPlayer mp) { - mVideoPlayer.seekTo(0); - } - - - /** - * Called when an error in playback occurs. - * - * @param mp {@link MediaPlayer} instance performing the playback. - * @param what Type of error - * @param extra Extra code specific to the error - */ - @Override - public boolean onError(MediaPlayer mp, int what, int extra) { - Log_OC.e(TAG, "Error in video playback, what = " + what + ", extra = " + extra); - - if (mMediaController != null) { - mMediaController.hide(); - } - - if (mVideoPlayer.getWindowToken() != null) { - String message = MediaService.getMessageForMediaError(this, what, extra); - new AlertDialog.Builder(this) - .setMessage(message) - .setPositiveButton(android.R.string.VideoView_error_button, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - PreviewVideoActivity.this.onCompletion(null); - } - }) - .setCancelable(false) - .show(); - } - return true; - } - - - @Override - protected void onAccountSet(boolean stateWasRecovered) { - if (getAccount() != null) { - OCFile file = getFile(); - /// Validate handled file (first image to preview) - if (file == null) { - throw new IllegalStateException("Instanced with a NULL OCFile"); - } - if (!file.isVideo()) { - throw new IllegalArgumentException("Non-video file passed as argument"); - } - mStorageManager = new FileDataStorageManager(getAccount(), getContentResolver()); - file = mStorageManager.getFileById(file.getFileId()); - if (file != null) { - if (file.isDown()) { - mVideoPlayer.setVideoPath(file.getStoragePath()); - - } else { - // not working yet - String url; - try { - url = AccountUtils.constructFullURLForAccount(this, getAccount()) + file.getRemotePath(); - mVideoPlayer.setVideoURI(Uri.parse(url)); - } catch (AccountNotFoundException e) { - onError(null, MediaService.OC_MEDIA_ERROR, R.string.media_err_no_account); - } - } - - // create and prepare control panel for the user - mMediaController = new MediaController(this); - mMediaController.setMediaPlayer(mVideoPlayer); - mMediaController.setAnchorView(mVideoPlayer); - mVideoPlayer.setMediaController(mMediaController); - - } else { - finish(); - } - } else { - Log_OC.wtf(TAG, "onAccountChanged was called with NULL account associated!"); - finish(); - } - } - - -} \ No newline at end of file