use of com.google.android.exoplayer2.DefaultLoadControl in project PreviewSeekBar by rubensousa.
the class ExoPlayerManager method createFullPlayer.
private SimpleExoPlayer createFullPlayer() {
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter());
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
LoadControl loadControl = new DefaultLoadControl();
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(playerView.getContext()), trackSelector, loadControl);
player.setPlayWhenReady(true);
player.prepare(mediaSourceBuilder.getMediaSource(false));
player.addListener(eventListener);
return player;
}
use of com.google.android.exoplayer2.DefaultLoadControl in project android-UniversalMusicPlayer by googlesamples.
the class LocalPlayback method play.
@Override
public void play(QueueItem item) {
mPlayOnFocusGain = true;
tryToGetAudioFocus();
registerAudioNoisyReceiver();
String mediaId = item.getDescription().getMediaId();
boolean mediaHasChanged = !TextUtils.equals(mediaId, mCurrentMediaId);
if (mediaHasChanged) {
mCurrentMediaId = mediaId;
}
if (mediaHasChanged || mExoPlayer == null) {
// release everything except the player
releaseResources(false);
MediaMetadataCompat track = mMusicProvider.getMusic(MediaIDHelper.extractMusicIDFromMediaID(item.getDescription().getMediaId()));
String source = track.getString(MusicProviderSource.CUSTOM_METADATA_TRACK_SOURCE);
if (source != null) {
// Escape spaces for URLs
source = source.replaceAll(" ", "%20");
}
if (mExoPlayer == null) {
mExoPlayer = ExoPlayerFactory.newSimpleInstance(mContext, new DefaultTrackSelector(), new DefaultLoadControl());
mExoPlayer.addListener(mEventListener);
}
// Android "O" makes much greater use of AudioAttributes, especially
// with regards to AudioFocus. All of UAMP's tracks are music, but
// if your content includes spoken word such as audiobooks or podcasts
// then the content type should be set to CONTENT_TYPE_SPEECH for those
// tracks.
final AudioAttributes audioAttributes = new AudioAttributes.Builder().setContentType(CONTENT_TYPE_MUSIC).setUsage(USAGE_MEDIA).build();
mExoPlayer.setAudioAttributes(audioAttributes);
// Produces DataSource instances through which media data is loaded.
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext, Util.getUserAgent(mContext, "uamp"), null);
// Produces Extractor instances for parsing the media data.
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
// The MediaSource represents the media to be played.
MediaSource mediaSource = new ExtractorMediaSource(Uri.parse(source), dataSourceFactory, extractorsFactory, null, null);
// Prepares media to play (happens on background thread) and triggers
// {@code onPlayerStateChanged} callback when the stream is ready to play.
mExoPlayer.prepare(mediaSource);
// If we are streaming from the internet, we want to hold a
// Wifi lock, which prevents the Wifi radio from going to
// sleep while the song is playing.
mWifiLock.acquire();
}
configurePlayerState();
}
use of com.google.android.exoplayer2.DefaultLoadControl in project twicalico by moko256.
the class ImagePagerChildFragment method onCreateView.
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
FlingLayout view = (FlingLayout) inflater.inflate(R.layout.fragment_image_pager_child, null);
view.setDismissListener(() -> {
getActivity().finish();
return Unit.INSTANCE;
});
view.setPositionChangeListener((Integer top, Integer left, Float dragRangeRate) -> {
view.setBackgroundColor(Color.argb(Math.round(255 * (1.0F - dragRangeRate)), 0, 0, 0));
return Unit.INSTANCE;
});
MediaEntity mediaEntity;
if (getArguments() == null)
return view;
mediaEntity = (MediaEntity) getArguments().getSerializable(FRAG_MEDIA_ENTITY);
if (mediaEntity == null)
return view;
switch(mediaEntity.getType()) {
case "video":
String videoPath = null;
boolean isHls = false;
for (MediaEntity.Variant variant : mediaEntity.getVideoVariants()) {
if (variant.getContentType().equals("application/x-mpegURL")) {
videoPath = variant.getUrl();
isHls = true;
}
}
if (videoPath == null) {
videoPath = mediaEntity.getVideoVariants()[0].getUrl();
}
videoPlayView = view.findViewById(R.id.fragment_image_pager_video);
videoPlayView.setVisibility(View.VISIBLE);
videoPlayView.setControllerVisibilityListener(visibility -> {
if (visibility != View.VISIBLE) {
hideSystemUI();
} else {
showSystemUI();
}
});
getActivity().getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(visibility -> {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
((AppCompatActivity) getActivity()).getSupportActionBar().show();
videoPlayView.showController();
}
});
player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(getContext()), new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter(), Integer.MAX_VALUE, AdaptiveTrackSelection.DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_MS, AdaptiveTrackSelection.DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_MS, AdaptiveTrackSelection.DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_MS, AdaptiveTrackSelection.DEFAULT_BANDWIDTH_FRACTION)), new DefaultLoadControl());
if (savedInstanceState != null) {
player.seekTo(savedInstanceState.getLong("video_time", 0));
}
videoPlayView.setPlayer(player);
player.prepare((isHls) ? new HlsMediaSource.Factory(new OkHttpDataSourceFactory(GlobalApplication.getOkHttpClient(), getResources().getText(R.string.app_name).toString(), null)).createMediaSource(Uri.parse(videoPath)) : new ExtractorMediaSource.Factory(new OkHttpDataSourceFactory(GlobalApplication.getOkHttpClient(), getResources().getText(R.string.app_name).toString(), null)).createMediaSource(Uri.parse(mediaEntity.getVideoVariants()[0].getUrl()), new Handler(), null));
break;
case "animated_gif":
videoPlayView = view.findViewById(R.id.fragment_image_pager_video);
videoPlayView.setVisibility(View.VISIBLE);
videoPlayView.setControllerVisibilityListener(visibility -> {
if (visibility != View.VISIBLE) {
hideSystemUI();
} else {
showSystemUI();
}
});
getActivity().getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(visibility -> {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
((AppCompatActivity) getActivity()).getSupportActionBar().show();
videoPlayView.showController();
}
});
player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(getContext()), new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter(), Integer.MAX_VALUE, AdaptiveTrackSelection.DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_MS, AdaptiveTrackSelection.DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_MS, AdaptiveTrackSelection.DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_MS, AdaptiveTrackSelection.DEFAULT_BANDWIDTH_FRACTION)), new DefaultLoadControl());
if (savedInstanceState != null) {
player.seekTo(savedInstanceState.getLong("video_time", 0));
}
videoPlayView.setPlayer(player);
player.prepare(new LoopingMediaSource(new ExtractorMediaSource.Factory(new OkHttpDataSourceFactory(GlobalApplication.getOkHttpClient(), getResources().getText(R.string.app_name).toString(), null)).createMediaSource(Uri.parse(mediaEntity.getVideoVariants()[0].getUrl()), new Handler(), null)));
player.setPlayWhenReady(true);
break;
case "photo":
default:
getActivity().getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(visibility -> {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
((AppCompatActivity) getActivity()).getSupportActionBar().show();
}
});
imageView = view.findViewById(R.id.fragment_image_pager_image);
imageView.setVisibility(View.VISIBLE);
imageView.setOnClickListener(v -> {
if ((getActivity().getWindow().getDecorView().getSystemUiVisibility() & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
hideSystemUI();
} else {
showSystemUI();
}
});
imageView.setOnScaleChangeListener((float scaleFactor, float focusX, float focusY) -> view.setDragEnabled(scaleFactor <= 1F));
GlideApp.with(this).load(TwitterStringUtils.convertLargeImageUrl(mediaEntity.getMediaURLHttps())).fitCenter().thumbnail(GlideApp.with(this).load(TwitterStringUtils.convertSmallImageUrl(mediaEntity.getMediaURLHttps())).fitCenter()).into(imageView);
break;
}
return view;
}
use of com.google.android.exoplayer2.DefaultLoadControl in project NiceMusic by lizixian18.
the class ExoPlayback method play.
@Override
public void play(SongInfo info) {
mPlayOnFocusGain = true;
mFocusAndLockManager.tryToGetAudioFocus();
registerAudioNoisyReceiver();
String mediaId = info.getSongId();
boolean mediaHasChanged = !TextUtils.equals(mediaId, mCurrentMediaId);
if (mediaHasChanged) {
mCurrentMediaId = mediaId;
mCurrentMediaSongInfo = info;
}
if (mediaHasChanged || mExoPlayer == null) {
// release everything except the player
releaseResources(false);
String source = info.getSongUrl();
if (source != null) {
// Escape spaces for URLs
source = source.replaceAll(" ", "%20");
}
if (mExoPlayer == null) {
mExoPlayer = ExoPlayerFactory.newSimpleInstance(mContext, new DefaultTrackSelector(), new DefaultLoadControl());
mExoPlayer.addListener(mEventListener);
}
final AudioAttributes audioAttributes = new AudioAttributes.Builder().setContentType(CONTENT_TYPE_MUSIC).setUsage(USAGE_MEDIA).build();
mExoPlayer.setAudioAttributes(audioAttributes);
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext, Util.getUserAgent(mContext, "musiclibrary"), null);
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
// MediaSource mediaSource = new ExtractorMediaSource(Uri.parse(source), dataSourceFactory, extractorsFactory, null, null);
MediaSource mediaSource = buildMediaSource(Uri.parse(source), null, null, null);
mExoPlayer.prepare(mediaSource);
mFocusAndLockManager.acquireWifiLock();
}
configurePlayerState();
}
use of com.google.android.exoplayer2.DefaultLoadControl in project Camera-Roll-Android-App by kollerlukas.
the class VideoPlayerActivity method initPlayer.
private void initPlayer() {
// Produces DataSource instances through which media data is loaded.
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, getString(R.string.app_name)), null);
// Produces Extractor instances for parsing the media data.
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
// This is the MediaSource representing the media to be played.
MediaSource videoSource = new ExtractorMediaSource(videoUri, dataSourceFactory, extractorsFactory, null, null);
DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(this);
// Create the player
player = ExoPlayerFactory.newSimpleInstance(renderersFactory, new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(null)), new DefaultLoadControl());
// Bind the player to the view.
SimpleExoPlayerView simpleExoPlayerView = findViewById(R.id.simpleExoPlayerView);
simpleExoPlayerView.setPlayer(player);
// Prepare the player with the source.
player.prepare(videoSource);
player.setRepeatMode(Player.REPEAT_MODE_ONE);
player.setPlayWhenReady(true);
final ImageButton playPause = findViewById(R.id.play_pause);
player.addListener(new SimpleEventListener() {
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
// update PlayPause-Button
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && showAnimations()) {
if (player.getPlayWhenReady()) {
playPause.setImageResource(R.drawable.play_to_pause_avd);
} else {
playPause.setImageResource(R.drawable.pause_to_play_avd);
}
Drawable d = playPause.getDrawable();
if (d instanceof Animatable) {
((Animatable) d).start();
}
} else {
if (player.getPlayWhenReady()) {
playPause.setImageResource(R.drawable.ic_pause_white);
} else {
playPause.setImageResource(R.drawable.ic_play_arrow_white);
}
}
}
});
}
Aggregations