diff --git a/src/main/java/org/amahi/anywhere/tv/activity/TvPlaybackVideoActivity.java b/src/main/java/org/amahi/anywhere/tv/activity/TvPlaybackVideoActivity.java index 7847079e6..8ec32aa0d 100644 --- a/src/main/java/org/amahi/anywhere/tv/activity/TvPlaybackVideoActivity.java +++ b/src/main/java/org/amahi/anywhere/tv/activity/TvPlaybackVideoActivity.java @@ -24,6 +24,7 @@ import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; +import android.view.KeyEvent; import org.amahi.anywhere.AmahiApplication; import org.amahi.anywhere.R; @@ -43,12 +44,15 @@ public class TvPlaybackVideoActivity extends Activity { @Inject ServerClient serverClient; + private Fragment fragment; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tv_video_playback); setUpInjections(); - getFragmentManager().beginTransaction().replace(R.id.playback_controls_fragment_container, buildAudioFragment()).commit(); + fragment = buildAudioFragment(); + getFragmentManager().beginTransaction().replace(R.id.playback_controls_fragment_container, fragment).commit(); } private void setUpInjections() { @@ -76,4 +80,25 @@ private ServerFile getFile(){ private ArrayList getFiles(){ return getIntent().getParcelableArrayListExtra(Intents.Extras.SERVER_FILES); } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + switch (keyCode){ + case KeyEvent.KEYCODE_MEDIA_REWIND: + ((TvPlaybackVideoFragment)fragment).rewind(); + break; + case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: + ((TvPlaybackVideoFragment)fragment).fastForward(); + break; + case KeyEvent.KEYCODE_MEDIA_NEXT: + ((TvPlaybackVideoFragment)fragment).skipNext(); + break; + case KeyEvent.KEYCODE_MEDIA_PREVIOUS: + ((TvPlaybackVideoFragment)fragment).skipPrevious(); + break; + default: + break; + } + return super.onKeyDown(keyCode, event); + } } diff --git a/src/main/java/org/amahi/anywhere/tv/fragment/TvPlaybackVideoFragment.java b/src/main/java/org/amahi/anywhere/tv/fragment/TvPlaybackVideoFragment.java index 214b7a5c2..ec90fa2ae 100644 --- a/src/main/java/org/amahi/anywhere/tv/fragment/TvPlaybackVideoFragment.java +++ b/src/main/java/org/amahi/anywhere/tv/fragment/TvPlaybackVideoFragment.java @@ -111,7 +111,7 @@ public void onCreate(Bundle savedInstanceState) { playVideo(); - setBackgroundType(BG_DARK); + setBackgroundType(BG_NONE); setFadingEnabled(false); @@ -162,6 +162,10 @@ private boolean isVideo(ServerFile serverFile) { return Mimes.match(serverFile.getMime()) == Mimes.Type.VIDEO; } + private boolean isMetadataAvailable() { + return ServerShare.Tag.MOVIES.equals(getVideoShare().getTag()); + } + private void setDuration() { FFmpegMediaMetadataRetriever mFFmpegMediaMetadataRetriever = new FFmpegMediaMetadataRetriever(); mFFmpegMediaMetadataRetriever.setDataSource(getFileUri().toString()); @@ -233,8 +237,10 @@ public void onActionClicked(Action action) { if (action.getId() == mPlayPauseAction.getId()) { togglePlayPause(mPlayPauseAction.getIndex() == PlaybackControlsRow.PlayPauseAction.PAUSE); } else if (action.getId() == mRewindAction.getId()) { + setFadingEnabled(false); rewind(); } else if (action.getId() == mFastForwardAction.getId()) { + setFadingEnabled(false); fastForward(); } else if (action.getId() == mSkipNextAction.getId()) { skipNext(); @@ -268,7 +274,7 @@ private HeaderItem getHeader(){ return headerItem; } - private void togglePlayPause(boolean isPaused) { + public void togglePlayPause(boolean isPaused) { if (isPaused) { mediaPlayer.pause(); } else { @@ -277,21 +283,23 @@ private void togglePlayPause(boolean isPaused) { playbackStateChanged(); } - private void rewind() { + public void rewind() { if(mPlaybackControlsRow.getCurrentTime() - (10*1000)>0){ mediaPlayer.setTime(mPlaybackControlsRow.getCurrentTime() - (10 * 1000)); mPlaybackControlsRow.setCurrentTime((int) mediaPlayer.getTime()); } + setFadingEnabled(true); } - private void fastForward() { + public void fastForward() { if (mPlaybackControlsRow.getCurrentTime() + (10 * 1000) < mDuration) { mediaPlayer.setTime(mPlaybackControlsRow.getCurrentTime() + (10 * 1000)); mPlaybackControlsRow.setCurrentTime((int) mediaPlayer.getTime()); } + setFadingEnabled(true); } - private void skipPrevious() { + public void skipPrevious() { int presentIndex = mVideoList.indexOf(getVideoFile()); if (presentIndex < mVideoList.size() - 1) replaceFragment(mVideoList.get(presentIndex + 1)); @@ -299,7 +307,7 @@ private void skipPrevious() { replaceFragment(mVideoList.get(0)); } - private void skipNext() { + public void skipNext() { int presentIndex = mVideoList.indexOf(getVideoFile()); if (presentIndex > 0) replaceFragment(mVideoList.get(presentIndex - 1)); @@ -320,11 +328,13 @@ private void addPlaybackControlsRow() { mFastForwardAction = new PlaybackControlsRow.FastForwardAction(getActivity()); mSkipNextAction = new PlaybackControlsRow.SkipNextAction(getActivity()); mSkipPreviousAction = new PlaybackControlsRow.SkipPreviousAction(getActivity()); - mPrimaryActionsAdapter.add(mSkipPreviousAction); + if(!isMetadataAvailable()) + mPrimaryActionsAdapter.add(mSkipPreviousAction); mPrimaryActionsAdapter.add(mRewindAction); mPrimaryActionsAdapter.add(mPlayPauseAction); mPrimaryActionsAdapter.add(mFastForwardAction); - mPrimaryActionsAdapter.add(mSkipNextAction); + if(!isMetadataAvailable()) + mPrimaryActionsAdapter.add(mSkipNextAction); playbackStateChanged(); } diff --git a/src/main/java/org/amahi/anywhere/tv/presenter/MainTVPresenter.java b/src/main/java/org/amahi/anywhere/tv/presenter/MainTVPresenter.java index 0783bf16f..c83238175 100644 --- a/src/main/java/org/amahi/anywhere/tv/presenter/MainTVPresenter.java +++ b/src/main/java/org/amahi/anywhere/tv/presenter/MainTVPresenter.java @@ -50,6 +50,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.Locale; public class MainTVPresenter extends Presenter { @@ -152,7 +153,7 @@ private void setUpMetaDimensions(ViewHolder viewHolder) { private void setDate(ServerFile serverFile, ViewHolder viewHolder) { Date d = serverFile.getModificationTime(); - SimpleDateFormat dt = new SimpleDateFormat("EEE LLL dd yyyy"); + SimpleDateFormat dt = new SimpleDateFormat("EEE LLL dd yyyy", Locale.US); viewHolder.mCardView.setContentText(dt.format(d)); } @@ -185,7 +186,6 @@ private void setUpDrawable(ServerFile serverFile, ViewHolder viewHolder) { public void onFileMetadataRetrieved(FileMetadataRetrievedEvent event) { ServerFile serverFile = event.getFile(); ViewHolder viewHolder = event.getViewHolder(); - viewHolder.mCardView.setTitleText(""); serverFile.setMetaDataFetched(true); if (event.getFileMetadata() == null) { populateData(serverFile, viewHolder);