Autoría | Ultima modificación | Ver Log |
package com.cesams.twogetskills.activity;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.ProgressBar;import com.cesams.twogetskills.Constants;import com.cesams.twogetskills.R;import com.cesams.twogetskills.library.MD5;import com.google.android.exoplayer2.ExoPlayer;import com.google.android.exoplayer2.MediaItem;import com.google.android.exoplayer2.Player;import com.google.android.exoplayer2.SimpleExoPlayer;import com.google.android.exoplayer2.source.MediaSource;import com.google.android.exoplayer2.source.ProgressiveMediaSource;import com.google.android.exoplayer2.ui.PlayerView;import com.google.android.exoplayer2.upstream.DataSource;import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;import com.google.android.exoplayer2.util.Util;import java.util.Calendar;import java.util.Random;import java.util.TimeZone;public class VideoAudioActivity extends AppCompatActivity {private static final String TAG = "C2GS - VideoßActivity";private SimpleExoPlayer simpleExoPlayer;private PlayerView playerView;private ProgressBar progressBar;private long playbackPosition;private String videoAudioUrl;private String deviceId;private String password;private boolean durationSet = false;private long realDurationMillis = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_video_audio);videoAudioUrl = getIntent().getStringExtra("videoAudioUrl");deviceId = getIntent().getStringExtra("deviceId");password = getIntent().getStringExtra("password");playerView = (PlayerView) findViewById(R.id.activity_video_audio_player);progressBar = (ProgressBar) findViewById(R.id.activity_video_audio_progress_bar);try {} catch (Exception e) {Log.e("VideoAudioActivity", " exoplayer error " + e.toString());}}public void onStart(){super.onStart();initializePlayer();}public void onStop(){super.onStop();releasePlayer();}@Overridepublic void onBackPressed() {try {long currentPosition = simpleExoPlayer.getCurrentPosition();long duration = simpleExoPlayer.getDuration();long dif = duration - currentPosition;//10 seg x 1000 millisecondsif(dif <= 10000 ) {Intent intent = new Intent();intent.putExtra("completed", true);intent.putExtra("requestCode", Constants.REQUEST_CODE_AUDIO_VIDEO);setResult(RESULT_OK, intent);finish();}} catch(Exception e) {}setResult(RESULT_CANCELED);finish();}public void initializePlayer() {simpleExoPlayer = new SimpleExoPlayer.Builder(this).build();preparePlayer();playerView.setPlayer(simpleExoPlayer);simpleExoPlayer.setPlayWhenReady(true);simpleExoPlayer.seekTo(0, playbackPosition);simpleExoPlayer.addListener(new Player.EventListener() {@Overridepublic void onPlaybackStateChanged(int state) {if (state == ExoPlayer.STATE_READY && !durationSet) {realDurationMillis = simpleExoPlayer.getDuration();durationSet = true;} else if(state == ExoPlayer.STATE_IDLE) {playerView.setKeepScreenOn(false);} else if(state == ExoPlayer.STATE_ENDED) {playerView.setKeepScreenOn(false);Intent intent = new Intent();intent.putExtra("completed", true);intent.putExtra("requestCode", Constants.REQUEST_CODE_AUDIO_VIDEO);setResult(RESULT_OK, intent);finish();} else {playerView.setKeepScreenOn(true);}}@Overridepublic void onIsLoadingChanged(boolean isLoading) {if (isLoading){progressBar.setVisibility(View.VISIBLE);} else {progressBar.setVisibility(View.INVISIBLE);}}});}public void preparePlayer(){TimeZone timeZone = TimeZone.getTimeZone("UTC");Calendar calendar = Calendar.getInstance(timeZone);TimeZone tz = calendar.getTimeZone();int created = (int) (calendar.getTimeInMillis() / 1000);Random random = new Random(created);int rand = 1000 + random.nextInt(8999);Log.d(TAG, "token = " + deviceId);Log.d(TAG, "created = " + created);Log.d(TAG, "rand = " + rand);Log.d(TAG, "calc = " + password + ':' + created + ':' + rand);String secret = MD5.generar(password + ':' + created + ':' + rand);try {DefaultHttpDataSourceFactory httpDataSourceFactory = new DefaultHttpDataSourceFactory(Util.getUserAgent(this, this.getString(R.string.app_name)), null);httpDataSourceFactory.getDefaultRequestProperties().set(Constants.HTTP_HEADER_SECURITY_TOKEN, deviceId);httpDataSourceFactory.getDefaultRequestProperties().set(Constants.HTTP_HEADER_SECURITY_SECRET, secret);httpDataSourceFactory.getDefaultRequestProperties().set(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(created));httpDataSourceFactory.getDefaultRequestProperties().set(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(rand));DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, null, httpDataSourceFactory);// Create a progressive media source pointing to a stream uri.Log.d(TAG, "video file = " + videoAudioUrl);MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(MediaItem.fromUri(Uri.parse(videoAudioUrl)));simpleExoPlayer.setMediaSource(mediaSource);} catch (Exception e) {Log.e("MainAcvtivity", " exoplayer error " + e.toString());}}public void releasePlayer() {playbackPosition = simpleExoPlayer.getCurrentPosition();simpleExoPlayer.release();}}