Code rearrangements + bugfixes
This commit is contained in:
parent
ea67e94edb
commit
8236f49f90
@ -19,6 +19,7 @@ import android.os.IBinder;
|
|||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentManager;
|
||||||
import android.support.v4.app.FragmentPagerAdapter;
|
import android.support.v4.app.FragmentPagerAdapter;
|
||||||
|
import android.support.v4.app.FragmentStatePagerAdapter;
|
||||||
import android.support.v4.view.ViewPager;
|
import android.support.v4.view.ViewPager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
@ -127,10 +128,13 @@ public class MediaplayerActivity extends SherlockFragmentActivity implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPrepareOptionsMenu(Menu menu) {
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||||
|
|
||||||
menu.findItem(R.id.support_item).setVisible(media != null && media.getItem().getPaymentLink() != null);
|
menu.findItem(R.id.support_item).setVisible(
|
||||||
menu.findItem(R.id.share_link_item).setVisible(media != null && media.getItem().getLink() != null);
|
media != null && media.getItem().getPaymentLink() != null);
|
||||||
menu.findItem(R.id.visit_website_item).setVisible(media != null && media.getItem().getLink() != null);
|
menu.findItem(R.id.share_link_item).setVisible(
|
||||||
|
media != null && media.getItem().getLink() != null);
|
||||||
|
menu.findItem(R.id.visit_website_item).setVisible(
|
||||||
|
media != null && media.getItem().getLink() != null);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +145,8 @@ public class MediaplayerActivity extends SherlockFragmentActivity implements
|
|||||||
finish();
|
finish();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return FeedItemMenuHandler.onMenuItemClicked(this, item, media.getItem());
|
return FeedItemMenuHandler.onMenuItemClicked(this, item,
|
||||||
|
media.getItem());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -312,12 +317,11 @@ public class MediaplayerActivity extends SherlockFragmentActivity implements
|
|||||||
if (!mediaInfoLoaded) {
|
if (!mediaInfoLoaded) {
|
||||||
Log.d(TAG, "Loading media info");
|
Log.d(TAG, "Loading media info");
|
||||||
if (media != null) {
|
if (media != null) {
|
||||||
|
getSupportActionBar().setSubtitle(
|
||||||
|
media.getItem().getTitle());
|
||||||
|
getSupportActionBar().setTitle(
|
||||||
|
media.getItem().getFeed().getTitle());
|
||||||
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
|
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
|
||||||
getSupportActionBar().setSubtitle(
|
|
||||||
media.getItem().getTitle());
|
|
||||||
getSupportActionBar().setTitle(
|
|
||||||
media.getItem().getFeed().getTitle());
|
|
||||||
pagerAdapter.notifyDataSetChanged();
|
pagerAdapter.notifyDataSetChanged();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -496,16 +500,37 @@ public class MediaplayerActivity extends SherlockFragmentActivity implements
|
|||||||
public void onServiceConnected(ComponentName className, IBinder service) {
|
public void onServiceConnected(ComponentName className, IBinder service) {
|
||||||
playbackService = ((PlaybackService.LocalBinder) service)
|
playbackService = ((PlaybackService.LocalBinder) service)
|
||||||
.getService();
|
.getService();
|
||||||
int requestedOrientation;
|
|
||||||
status = playbackService.getStatus();
|
|
||||||
media = playbackService.getMedia();
|
|
||||||
invalidateOptionsMenu();
|
|
||||||
registerReceiver(statusUpdate, new IntentFilter(
|
registerReceiver(statusUpdate, new IntentFilter(
|
||||||
PlaybackService.ACTION_PLAYER_STATUS_CHANGED));
|
PlaybackService.ACTION_PLAYER_STATUS_CHANGED));
|
||||||
|
|
||||||
registerReceiver(notificationReceiver, new IntentFilter(
|
registerReceiver(notificationReceiver, new IntentFilter(
|
||||||
PlaybackService.ACTION_PLAYER_NOTIFICATION));
|
PlaybackService.ACTION_PLAYER_NOTIFICATION));
|
||||||
|
|
||||||
|
queryService();
|
||||||
|
Log.d(TAG, "Connection to Service established");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onServiceDisconnected(ComponentName name) {
|
||||||
|
playbackService = null;
|
||||||
|
Log.d(TAG, "Disconnected from Service");
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when connection to playback service has been established or
|
||||||
|
* information has to be refreshed
|
||||||
|
*/
|
||||||
|
private void queryService() {
|
||||||
|
Log.d(TAG, "Querying service info");
|
||||||
|
if (playbackService != null) {
|
||||||
|
int requestedOrientation;
|
||||||
|
status = playbackService.getStatus();
|
||||||
|
media = playbackService.getMedia();
|
||||||
|
invalidateOptionsMenu();
|
||||||
|
|
||||||
if (playbackService.isPlayingVideo()) {
|
if (playbackService.isPlayingVideo()) {
|
||||||
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
||||||
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
|
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
|
||||||
@ -523,17 +548,11 @@ public class MediaplayerActivity extends SherlockFragmentActivity implements
|
|||||||
Log.d(TAG,
|
Log.d(TAG,
|
||||||
"Orientation incorrect, waiting for orientation change");
|
"Orientation incorrect, waiting for orientation change");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
Log.d(TAG, "Connection to Service established");
|
Log.e(TAG,
|
||||||
|
"queryService() was called without an existing connection to playbackservice");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public void onServiceDisconnected(ComponentName name) {
|
|
||||||
playbackService = null;
|
|
||||||
Log.d(TAG, "Disconnected from Service");
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private BroadcastReceiver statusUpdate = new BroadcastReceiver() {
|
private BroadcastReceiver statusUpdate = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
@ -565,17 +584,13 @@ public class MediaplayerActivity extends SherlockFragmentActivity implements
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PlaybackService.NOTIFICATION_TYPE_RELOAD:
|
case PlaybackService.NOTIFICATION_TYPE_RELOAD:
|
||||||
try {
|
|
||||||
unbindService(mConnection);
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
if (positionObserver != null) {
|
if (positionObserver != null) {
|
||||||
positionObserver.cancel(true);
|
positionObserver.cancel(true);
|
||||||
positionObserver = null;
|
positionObserver = null;
|
||||||
}
|
}
|
||||||
mediaInfoLoaded = false;
|
mediaInfoLoaded = false;
|
||||||
bindToService();
|
queryService();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -587,6 +602,96 @@ public class MediaplayerActivity extends SherlockFragmentActivity implements
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private boolean holderCreated;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void surfaceChanged(SurfaceHolder holder, int format, int width,
|
||||||
|
int height) {
|
||||||
|
holder.setFixedSize(width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void surfaceCreated(SurfaceHolder holder) {
|
||||||
|
holderCreated = true;
|
||||||
|
Log.d(TAG, "Videoview holder created");
|
||||||
|
if (status == PlayerStatus.AWAITING_VIDEO_SURFACE) {
|
||||||
|
if (playbackService != null) {
|
||||||
|
playbackService.setVideoSurface(holder);
|
||||||
|
} else {
|
||||||
|
Log.e(TAG,
|
||||||
|
"Could'nt attach surface to mediaplayer - reference to service was null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void surfaceDestroyed(SurfaceHolder holder) {
|
||||||
|
holderCreated = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class MediaPlayerPagerAdapter extends
|
||||||
|
FragmentStatePagerAdapter {
|
||||||
|
private int numItems;
|
||||||
|
private MediaplayerActivity activity;
|
||||||
|
|
||||||
|
private static final int POS_COVER = 0;
|
||||||
|
private static final int POS_DESCR = 1;
|
||||||
|
private static final int POS_CHAPTERS = 2;
|
||||||
|
|
||||||
|
public MediaPlayerPagerAdapter(FragmentManager fm, int numItems,
|
||||||
|
MediaplayerActivity activity) {
|
||||||
|
super(fm);
|
||||||
|
this.numItems = numItems;
|
||||||
|
this.activity = activity;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Fragment getItem(int position) {
|
||||||
|
if (activity.media != null) {
|
||||||
|
switch (position) {
|
||||||
|
case POS_COVER:
|
||||||
|
activity.coverFragment = CoverFragment
|
||||||
|
.newInstance(activity.media.getItem());
|
||||||
|
return activity.coverFragment;
|
||||||
|
case POS_DESCR:
|
||||||
|
activity.descriptionFragment = ItemDescriptionFragment
|
||||||
|
.newInstance(activity.media.getItem(), true);
|
||||||
|
return activity.descriptionFragment;
|
||||||
|
default:
|
||||||
|
return CoverFragment.newInstance(null);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return CoverFragment.newInstance(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getPageTitle(int position) {
|
||||||
|
switch (position) {
|
||||||
|
case POS_COVER:
|
||||||
|
return activity.getString(R.string.cover_label);
|
||||||
|
case POS_DESCR:
|
||||||
|
return activity.getString(R.string.description_label);
|
||||||
|
default:
|
||||||
|
return super.getPageTitle(position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCount() {
|
||||||
|
return numItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemPosition(Object object) {
|
||||||
|
return POSITION_UNCHANGED;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------- ASYNC TASKS
|
||||||
|
|
||||||
/** Refreshes the current position of the media file that is playing. */
|
/** Refreshes the current position of the media file that is playing. */
|
||||||
public class MediaPositionObserver extends
|
public class MediaPositionObserver extends
|
||||||
AsyncTask<MediaPlayer, Void, Void> {
|
AsyncTask<MediaPlayer, Void, Void> {
|
||||||
@ -662,86 +767,4 @@ public class MediaplayerActivity extends SherlockFragmentActivity implements
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean holderCreated;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void surfaceChanged(SurfaceHolder holder, int format, int width,
|
|
||||||
int height) {
|
|
||||||
holder.setFixedSize(width, height);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void surfaceCreated(SurfaceHolder holder) {
|
|
||||||
holderCreated = true;
|
|
||||||
Log.d(TAG, "Videoview holder created");
|
|
||||||
if (status == PlayerStatus.AWAITING_VIDEO_SURFACE) {
|
|
||||||
playbackService.setVideoSurface(holder);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void surfaceDestroyed(SurfaceHolder holder) {
|
|
||||||
holderCreated = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class MediaPlayerPagerAdapter extends FragmentPagerAdapter {
|
|
||||||
private int numItems;
|
|
||||||
private MediaplayerActivity activity;
|
|
||||||
|
|
||||||
private static final int POS_COVER = 0;
|
|
||||||
private static final int POS_DESCR = 1;
|
|
||||||
private static final int POS_CHAPTERS = 2;
|
|
||||||
|
|
||||||
public MediaPlayerPagerAdapter(FragmentManager fm, int numItems,
|
|
||||||
MediaplayerActivity activity) {
|
|
||||||
super(fm);
|
|
||||||
this.numItems = numItems;
|
|
||||||
this.activity = activity;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Fragment getItem(int position) {
|
|
||||||
if (activity.media != null) {
|
|
||||||
switch (position) {
|
|
||||||
case POS_COVER:
|
|
||||||
activity.coverFragment = CoverFragment
|
|
||||||
.newInstance(activity.media.getItem());
|
|
||||||
return activity.coverFragment;
|
|
||||||
case POS_DESCR:
|
|
||||||
activity.descriptionFragment = ItemDescriptionFragment
|
|
||||||
.newInstance(activity.media.getItem(), true);
|
|
||||||
return activity.descriptionFragment;
|
|
||||||
default:
|
|
||||||
return CoverFragment.newInstance(null);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return CoverFragment.newInstance(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public CharSequence getPageTitle(int position) {
|
|
||||||
switch (position) {
|
|
||||||
case POS_COVER:
|
|
||||||
return activity.getString(R.string.cover_label);
|
|
||||||
case POS_DESCR:
|
|
||||||
return activity.getString(R.string.description_label);
|
|
||||||
default:
|
|
||||||
return super.getPageTitle(position);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getCount() {
|
|
||||||
return numItems;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getItemPosition(Object object) {
|
|
||||||
return POSITION_UNCHANGED;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ public class PlaybackService extends Service {
|
|||||||
private PositionSaver positionSaver;
|
private PositionSaver positionSaver;
|
||||||
private WidgetUpdateWorker widgetUpdater;
|
private WidgetUpdateWorker widgetUpdater;
|
||||||
|
|
||||||
private PlayerStatus statusBeforeSeek;
|
private volatile PlayerStatus statusBeforeSeek;
|
||||||
|
|
||||||
/** True if mediaplayer was paused because it lost audio focus temporarily */
|
/** True if mediaplayer was paused because it lost audio focus temporarily */
|
||||||
private boolean pausedBecauseOfTransientAudiofocusLoss;
|
private boolean pausedBecauseOfTransientAudiofocusLoss;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user