diff --git a/app/build.gradle b/app/build.gradle
index 32b680739..25d3f6573 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -85,7 +85,6 @@ dependencies {
implementation "com.google.code.gson:gson:$gsonLibraryVersion"
implementation "com.google.guava:guava:$guavaLibraryVersion"
implementation "com.github.chrisbanes:PhotoView:$photoViewLibraryVersion"
- implementation "com.github.stom79:SwipeBackLayout:$swipebackLibraryVersion"
implementation 'com.r0adkll:slidableactivity:2.1.0'
implementation 'com.github.stom79:country-picker-android:1.2.0'
implementation 'com.github.stom79:mytransl:1.5'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6a2e8f817..e9839dbb8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -307,12 +307,6 @@
android:name="app.fedilab.android.activities.WebviewActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation|screenSize" />
-
. */
-package app.fedilab.android.activities;
-
-
-import android.Manifest;
-import android.content.SharedPreferences;
-import android.content.pm.PackageManager;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.graphics.RectF;
-import android.media.MediaPlayer;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.core.app.ActivityCompat;
-import androidx.core.content.ContextCompat;
-
-import android.os.Handler;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.webkit.WebView;
-import android.widget.FrameLayout;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.ProgressBar;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.request.target.SimpleTarget;
-import com.bumptech.glide.request.transition.Transition;
-import com.cleveroad.audiovisualization.DbmHandler;
-import com.cleveroad.audiovisualization.GLAudioVisualizationView;
-import com.github.chrisbanes.photoview.OnMatrixChangedListener;
-import com.github.chrisbanes.photoview.PhotoView;
-import com.google.android.exoplayer2.ExoPlayerFactory;
-import com.google.android.exoplayer2.Player;
-import com.google.android.exoplayer2.SimpleExoPlayer;
-import com.google.android.exoplayer2.source.ExtractorMediaSource;
-import com.google.android.exoplayer2.ui.SimpleExoPlayerView;
-import com.google.android.exoplayer2.upstream.DataSource;
-import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
-import com.google.android.exoplayer2.util.Util;
-import com.gw.swipeback.SwipeBackLayout;
-
-import java.io.File;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.Timer;
-import java.util.TimerTask;
-
-import javax.net.ssl.HttpsURLConnection;
-
-import app.fedilab.android.client.Entities.Attachment;
-import app.fedilab.android.client.Entities.Error;
-import app.fedilab.android.client.HttpsConnection;
-import app.fedilab.android.client.TLSSocketFactory;
-import app.fedilab.android.helper.Helper;
-import app.fedilab.android.webview.MastalabWebChromeClient;
-import app.fedilab.android.webview.MastalabWebViewClient;
-import app.fedilab.android.R;
-import app.fedilab.android.interfaces.OnDownloadInterface;
-import cafe.adriel.androidaudiorecorder.VisualizerHandler;
-import omrecorder.AudioChunk;
-import omrecorder.PullTransport;
-
-import static app.fedilab.android.helper.Helper.changeDrawableColor;
-import static cafe.adriel.androidaudiorecorder.Util.formatSeconds;
-import static cafe.adriel.androidaudiorecorder.Util.getDarkerColor;
-import static cafe.adriel.androidaudiorecorder.Util.isBrightColor;
-
-
-/**
- * Created by Thomas on 25/06/2017.
- * Media Activity
- */
-
-public class MediaActivity extends BaseActivity implements OnDownloadInterface, MediaPlayer.OnCompletionListener {
-
-
- private RelativeLayout loader;
- private ArrayList attachments;
- private PhotoView imageView;
- private SimpleExoPlayerView videoView;
- private float downX;
- private float downY;
- private int mediaPosition;
- MediaActivity.actionSwipe currentAction;
- static final int MIN_DISTANCE = 100;
- private String finalUrlDownload;
- private String preview_url;
- private ImageView prev, next;
- private boolean isControlElementShown = true;
- private Bitmap downloadedImage;
- private File fileVideo;
- private TextView progress;
- private ProgressBar pbar_inf;
- private TextView message_ready;
- private boolean canSwipe;
- private TextView media_description;
- private Attachment attachment;
- SwipeBackLayout mSwipeBackLayout;
- private float imageScale = 0;
- private RelativeLayout action_bar_container;
- private VisualizerHandler visualizerHandler;
- private TextView statusView;
- private TextView timerView;
- private ImageButton playView;
- private GLAudioVisualizationView visualizerView;
-
- private enum actionSwipe {
- RIGHT_TO_LEFT,
- LEFT_TO_RIGHT,
- POP
- }
-
- private WebView webview_video;
- private ImageButton media_save, media_share, media_close;
- private boolean scheduleHidden, scheduleHiddenDescription;
- private SimpleExoPlayer player;
- private boolean isSHaring;
- private String instance;
- private RelativeLayout content_audio;
- private MediaPlayer playeraudio;
- private Timer timer;
- private int playerSecondsElapsed;
- private static final Handler HANDLER = new Handler();
- private String url;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
- int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if (theme == Helper.THEME_BLACK)
- setTheme(R.style.TransparentBlack);
- super.onCreate(savedInstanceState);
- hideSystemUI();
- setContentView(R.layout.activity_media);
- action_bar_container = findViewById(R.id.action_bar_container);
- mSwipeBackLayout = new SwipeBackLayout(MediaActivity.this);
- mSwipeBackLayout.setDirectionMode(SwipeBackLayout.FROM_TOP);
- mSwipeBackLayout.setMaskAlpha(125);
- mSwipeBackLayout.setSwipeBackFactor(0.5f);
- mSwipeBackLayout.setSwipeBackListener(new SwipeBackLayout.OnSwipeBackListener() {
- @Override
- public void onViewPositionChanged(View mView, float swipeBackFraction, float SWIPE_BACK_FACTOR) {
- canSwipe = swipeBackFraction < 0.1;
- }
-
- @Override
- public void onViewSwipeFinished(View mView, boolean isEnd) {
- if (!isEnd)
- canSwipe = true;
- else {
- finish();
- overridePendingTransition(0, 0);
- }
- }
- });
-
- instance = Helper.getLiveInstance(MediaActivity.this);
- mSwipeBackLayout.attachToActivity(this);
- attachments = getIntent().getParcelableArrayListExtra("mediaArray");
- if (getIntent().getExtras() != null)
- mediaPosition = getIntent().getExtras().getInt("position", 1);
- if (attachments == null || attachments.size() == 0)
- finish();
-
- RelativeLayout main_container_media = findViewById(R.id.main_container_media);
- if (theme == Helper.THEME_LIGHT) {
- main_container_media.setBackgroundResource(R.color.mastodonC2);
- } else if (theme == Helper.THEME_BLACK) {
- main_container_media.setBackgroundResource(R.color.black);
- } else if (theme == Helper.THEME_DARK) {
- main_container_media.setBackgroundResource(R.color.mastodonC1_);
- }
- media_description = findViewById(R.id.media_description);
- message_ready = findViewById(R.id.message_ready);
- media_save = findViewById(R.id.media_save);
- media_share = findViewById(R.id.media_share);
- media_close = findViewById(R.id.media_close);
- progress = findViewById(R.id.loader_progress);
- webview_video = findViewById(R.id.webview_video);
- content_audio = findViewById(R.id.content_audio);
- media_save.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- isSHaring = false;
- if (attachment.getType().toLowerCase().equals("video") || attachment.getType().toLowerCase().equals("audio") || attachment.getType().toLowerCase().equals("gifv") || attachment.getType().toLowerCase().equals("web")) {
- if (attachment != null) {
- progress.setText("0 %");
- progress.setVisibility(View.VISIBLE);
- new HttpsConnection(MediaActivity.this, instance).download(attachment.getUrl(), MediaActivity.this);
- }
- } else {
- if (Build.VERSION.SDK_INT >= 23) {
- if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(MediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE);
- } else {
- Helper.manageMoveFileDownload(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo, false);
- }
- } else {
- Helper.manageMoveFileDownload(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo, false);
- }
- }
- }
- });
- media_share.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- isSHaring = true;
- if (attachment.getType().toLowerCase().equals("video") || attachment.getType().toLowerCase().equals("audio") || attachment.getType().toLowerCase().equals("gifv")) {
- if (attachment != null) {
- progress.setText("0 %");
- progress.setVisibility(View.VISIBLE);
- new HttpsConnection(MediaActivity.this, instance).download(attachment.getUrl(), MediaActivity.this);
- }
- } else {
- if (Build.VERSION.SDK_INT >= 23) {
- if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(MediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE);
- } else {
- Helper.manageMoveFileDownload(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo, true);
- }
- } else {
- Helper.manageMoveFileDownload(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo, true);
- }
- }
- }
- });
- media_close.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- finish();
- }
- });
- canSwipe = true;
- loader = findViewById(R.id.loader);
- imageView = findViewById(R.id.media_picture);
- videoView = findViewById(R.id.media_video);
- prev = findViewById(R.id.media_prev);
- next = findViewById(R.id.media_next);
- if (theme == Helper.THEME_BLACK) {
- changeDrawableColor(getApplicationContext(), prev, R.color.dark_icon);
- changeDrawableColor(getApplicationContext(), next, R.color.dark_icon);
- } else if (theme == Helper.THEME_LIGHT) {
- changeDrawableColor(getApplicationContext(), prev, R.color.mastodonC4);
- changeDrawableColor(getApplicationContext(), next, R.color.mastodonC4);
- } else {
- changeDrawableColor(getApplicationContext(), prev, R.color.white);
- changeDrawableColor(getApplicationContext(), next, R.color.white);
- }
- prev.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mediaPosition--;
- displayMediaAtPosition(actionSwipe.POP);
- }
- });
- next.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mediaPosition++;
- displayMediaAtPosition(actionSwipe.POP);
- }
- });
-
-
- imageView.setOnMatrixChangeListener(new OnMatrixChangedListener() {
- @Override
- public void onMatrixChanged(RectF rect) {
- imageScale = imageView.getScale();
- canSwipe = (imageView.getScale() == 1);
- mSwipeBackLayout.isDisabled(imageView.getScale() != 1);
- }
- });
- if (attachments != null && attachments.size() > 1) {
- prev.setVisibility(View.VISIBLE);
- next.setVisibility(View.VISIBLE);
- }
- pbar_inf = findViewById(R.id.pbar_inf);
- setTitle("");
-
- //isHiding = false;
- setTitle("");
- displayMediaAtPosition(actionSwipe.POP);
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- outState.putFloat("scale", imageScale);
- super.onSaveInstanceState(outState);
- }
-
- @Override
- public void onCompletion(MediaPlayer mp) {
- stopPlaying();
- }
-
- /**
- * Manage touch event
- * Allows to swipe from timelines
- *
- * @param event MotionEvent
- * @return boolean
- */
- @Override
- public boolean dispatchTouchEvent(MotionEvent event) {
- Boolean thisControllShown = isControlElementShown;
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN: {
- downX = event.getX();
- downY = event.getY();
- //Displays navigation left/right buttons
- if (attachments != null && attachments.size() > 1) {
- if (thisControllShown) {
- prev.setVisibility(View.GONE);
- next.setVisibility(View.GONE);
- } else {
- prev.setVisibility(View.VISIBLE);
- next.setVisibility(View.VISIBLE);
- }
- }
- return super.dispatchTouchEvent(event);
- }
- case MotionEvent.ACTION_UP: {
- float upX = event.getX();
- float deltaX = downX - upX;
- float upY = event.getY();
- float deltaY = downY - upY;
- // swipe horizontal
- if (downX > MIN_DISTANCE & (Math.abs(deltaX) > MIN_DISTANCE)) {
- if (!canSwipe || mediaPosition > attachments.size() || mediaPosition < 1 || attachments.size() <= 1)
- return super.dispatchTouchEvent(event);
- if (deltaX < 0) {
- switchOnSwipe(MediaActivity.actionSwipe.LEFT_TO_RIGHT);
- return true;
- }
- if (deltaX > 0) {
- switchOnSwipe(MediaActivity.actionSwipe.RIGHT_TO_LEFT);
- return true;
- }
- } else if (downY > MIN_DISTANCE & (Math.abs(deltaY) > MIN_DISTANCE)) {
- if (deltaY > 0 && canSwipe) {
- finish();
- return true;
- }
- if (deltaY < 0 && canSwipe) {
- finish();
- return true;
- }
- } else {
- currentAction = MediaActivity.actionSwipe.POP;
- isControlElementShown = !isControlElementShown;
- if (thisControllShown) {
- if (event.getY() > action_bar_container.getHeight()) {
- hideSystemUI();
- action_bar_container.setVisibility(View.GONE);
- if (media_description.getVisibility() == View.VISIBLE) {
- media_description.setVisibility(View.GONE);
- }
- if (videoView.getVisibility() == View.VISIBLE)
- videoView.hideController();
- }
- } else {
- action_bar_container.setVisibility(View.VISIBLE);
- FullScreencall(thisControllShown);
- if (attachment != null && attachment.getDescription() != null && !attachment.getDescription().equals("null")) {
- media_description.setText(attachment.getDescription());
- media_description.setVisibility(View.VISIBLE);
- imageView.setContentDescription(attachment.getDescription());
- } else {
- media_description.setText("");
- media_description.setVisibility(View.GONE);
- }
- if (videoView.getVisibility() == View.VISIBLE)
- videoView.showController();
- }
-
-
- }
- }
-
- }
- return super.dispatchTouchEvent(event);
- }
-
-
- private void switchOnSwipe(actionSwipe action) {
- loader.setVisibility(View.VISIBLE);
- mediaPosition = (action == actionSwipe.LEFT_TO_RIGHT) ? mediaPosition - 1 : mediaPosition + 1;
- displayMediaAtPosition(action);
- }
-
- private void displayMediaAtPosition(actionSwipe action) {
- if (mediaPosition > attachments.size())
- mediaPosition = 1;
- if (mediaPosition < 1)
- mediaPosition = attachments.size();
- currentAction = action;
- attachment = attachments.get(mediaPosition - 1);
- String type = attachment.getType();
- String url = attachment.getUrl();
- finalUrlDownload = url;
- videoView.setVisibility(View.GONE);
-
- imageView.setVisibility(View.GONE);
-
- if (attachment.getDescription() != null && !attachment.getDescription().equals("null")) {
- media_description.setText(attachment.getDescription());
- media_description.setVisibility(View.VISIBLE);
- } else {
- media_description.setText("");
- media_description.setVisibility(View.GONE);
- }
- preview_url = attachment.getPreview_url();
- if (type.equals("unknown")) {
- preview_url = attachment.getRemote_url();
- if (preview_url.endsWith(".png") || preview_url.endsWith(".jpg") || preview_url.endsWith(".jpeg") || preview_url.endsWith(".gif")) {
- type = "image";
- } else if (preview_url.endsWith(".mp4") || preview_url.endsWith(".mp3")) {
- type = "video";
- }
- url = attachment.getRemote_url();
- attachment.setType(type);
- }
- final String finalUrl = url;
- switch (type.toLowerCase()) {
- case "image":
- pbar_inf.setScaleY(1f);
- imageView.setVisibility(View.VISIBLE);
- fileVideo = null;
- pbar_inf.setIndeterminate(true);
- loader.setVisibility(View.VISIBLE);
- fileVideo = null;
- if (!finalUrl.endsWith(".gif")) {
- Glide.with(getApplicationContext())
- .asBitmap()
- .load(preview_url).into(
- new SimpleTarget() {
- @Override
- public void onResourceReady(@NonNull final Bitmap resource, Transition super Bitmap> transition) {
- Bitmap imageCompressed = Helper.compressImageIfNeeded(MediaActivity.this, resource);
- imageView.setImageBitmap(imageCompressed);
- Glide.with(getApplicationContext())
- .asBitmap()
- .load(finalUrl).into(
- new SimpleTarget() {
- @Override
- public void onResourceReady(@NonNull final Bitmap resource, Transition super Bitmap> transition) {
- loader.setVisibility(View.GONE);
- Bitmap imageCompressed = Helper.compressImageIfNeeded(MediaActivity.this, resource);
- if (imageView.getScale() < 1.1) {
- downloadedImage = resource;
- imageView.setImageBitmap(imageCompressed);
- } else {
- message_ready.setVisibility(View.VISIBLE);
- }
- message_ready.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- downloadedImage = resource;
- imageView.setImageBitmap(imageCompressed);
- message_ready.setVisibility(View.GONE);
- }
- });
- }
- }
- );
- }
- }
- );
- } else {
- loader.setVisibility(View.GONE);
- Glide.with(getApplicationContext())
- .load(finalUrl).into(imageView);
- }
- break;
- case "video":
- case "gifv":
- pbar_inf.setIndeterminate(false);
- pbar_inf.setScaleY(3f);
- try {
- HttpsURLConnection.setDefaultSSLSocketFactory(new TLSSocketFactory(instance));
- } catch (KeyManagementException e) {
- e.printStackTrace();
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- videoView.setVisibility(View.VISIBLE);
- Uri uri = Uri.parse(url);
- DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getApplicationContext(),
- Util.getUserAgent(getApplicationContext(), "Mastalab"), null);
- ExtractorMediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
- .createMediaSource(uri);
- player = ExoPlayerFactory.newSimpleInstance(MediaActivity.this);
- if (type.toLowerCase().equals("gifv"))
- player.setRepeatMode(Player.REPEAT_MODE_ONE);
- videoView.setPlayer(player);
- loader.setVisibility(View.GONE);
- player.prepare(videoSource);
- player.setPlayWhenReady(true);
- break;
- case "web":
- loader.setVisibility(View.GONE);
- webview_video = Helper.initializeWebview(MediaActivity.this, R.id.webview_video);
- webview_video.setVisibility(View.VISIBLE);
- FrameLayout webview_container = findViewById(R.id.main_media_frame);
- final ViewGroup videoLayout = findViewById(R.id.videoLayout);
-
- MastalabWebChromeClient mastalabWebChromeClient = new MastalabWebChromeClient(MediaActivity.this, webview_video, webview_container, videoLayout);
- mastalabWebChromeClient.setOnToggledFullscreen(new MastalabWebChromeClient.ToggledFullscreenCallback() {
- @Override
- public void toggledFullscreen(boolean fullscreen) {
-
- if (fullscreen) {
- videoLayout.setVisibility(View.VISIBLE);
- WindowManager.LayoutParams attrs = getWindow().getAttributes();
- attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
- attrs.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
- getWindow().setAttributes(attrs);
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
- } else {
- WindowManager.LayoutParams attrs = getWindow().getAttributes();
- attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
- attrs.flags &= ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
- getWindow().setAttributes(attrs);
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
- videoLayout.setVisibility(View.GONE);
- }
- }
- });
- webview_video.getSettings().setAllowFileAccess(true);
- webview_video.setWebChromeClient(mastalabWebChromeClient);
- webview_video.getSettings().setDomStorageEnabled(true);
- webview_video.getSettings().setAppCacheEnabled(true);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
- webview_video.getSettings().setMediaPlaybackRequiresUserGesture(false);
- }
- webview_video.setWebViewClient(new MastalabWebViewClient(MediaActivity.this));
- webview_video.loadUrl(attachment.getUrl());
- break;
- case "audio":
- loader.setVisibility(View.GONE);
- content_audio.setVisibility(View.VISIBLE);
- int color = getResources().getColor(R.color.mastodonC1);
- visualizerView = new GLAudioVisualizationView.Builder(MediaActivity.this)
- .setLayersCount(1)
- .setWavesCount(6)
- .setWavesHeight(R.dimen.aar_wave_height)
- .setWavesFooterHeight(R.dimen.aar_footer_height)
- .setBubblesPerLayer(20)
- .setBubblesSize(R.dimen.aar_bubble_size)
- .setBubblesRandomizeSize(true)
- .setBackgroundColor(getDarkerColor(color))
- .setLayerColors(new int[]{color})
- .build();
-
- statusView = findViewById(R.id.status);
- timerView = findViewById(R.id.timer);
- playView = findViewById(R.id.play);
- content_audio.setBackgroundColor(getDarkerColor(color));
- content_audio.addView(visualizerView, 0);
- playView.setVisibility(View.INVISIBLE);
- this.url = attachment.getUrl();
-
- startPlaying();
- break;
- }
- }
-
-
- public void togglePlaying(View v) {
-
- HANDLER.postDelayed(new Runnable() {
- @Override
- public void run() {
- if (isPlaying()) {
- stopPlaying();
- } else {
- startPlaying();
- }
- }
- }, 100);
- }
-
- private void startPlaying() {
- try {
-
- playeraudio = new MediaPlayer();
- playeraudio.setDataSource(url);
- playeraudio.prepare();
- playeraudio.start();
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) ==
- PackageManager.PERMISSION_GRANTED) {
- visualizerView.linkTo(DbmHandler.Factory.newVisualizerHandler(MediaActivity.this, playeraudio));
- }
-
- }
- visualizerView.post(new Runnable() {
- @Override
- public void run() {
- playeraudio.setOnCompletionListener(MediaActivity.this);
- }
- });
-
- timerView.setText("00:00:00");
- playView.setVisibility(View.VISIBLE);
- statusView.setText(R.string.aar_playing);
- statusView.setVisibility(View.VISIBLE);
- playView.setImageResource(R.drawable.aar_ic_stop);
-
- playerSecondsElapsed = 0;
- startTimer();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
- private void stopPlaying() {
- statusView.setText("");
- statusView.setVisibility(View.INVISIBLE);
- playView.setImageResource(R.drawable.aar_ic_play);
-
- visualizerView.release();
- if (visualizerHandler != null) {
- visualizerHandler.stop();
- }
-
- if (playeraudio != null) {
- try {
- playeraudio.pause();
- } catch (Exception ignored) {
- }
- }
-
- stopTimer();
- }
-
- private void startTimer() {
- stopTimer();
- timer = new Timer();
- timer.scheduleAtFixedRate(new TimerTask() {
- @Override
- public void run() {
- updateTimer();
- }
- }, 0, 1000);
- }
-
- private void updateTimer() {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- playerSecondsElapsed++;
- timerView.setText(formatSeconds(playerSecondsElapsed));
- }
- });
- }
-
- private void stopTimer() {
- if (timer != null) {
- timer.cancel();
- timer.purge();
- timer = null;
- }
- }
-
- private boolean isPlaying() {
- try {
- return playeraudio != null && playeraudio.isPlaying();
- } catch (Exception e) {
- return false;
- }
- }
-
-
- @Override
- public void onDownloaded(String path, String originUrl, Error error) {
-
- if (path != null) {
- File response = new File(path);
- File dir = getCacheDir();
- File from = new File(dir, response.getName());
- File to = new File(dir, Helper.md5(originUrl) + ".mp4");
- if (from.exists())
- //noinspection ResultOfMethodCallIgnored
- from.renameTo(to);
- fileVideo = to;
- downloadedImage = null;
- }
- if (Build.VERSION.SDK_INT >= 23) {
- if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(MediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE);
- } else {
- Helper.manageMoveFileDownload(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo, isSHaring);
- }
- } else {
- Helper.manageMoveFileDownload(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo, isSHaring);
- }
- if (progress != null)
- progress.setVisibility(View.GONE);
- if (loader != null)
- loader.setVisibility(View.GONE);
- }
-
- @Override
- public void onPause() {
- super.onPause();
- if (player != null) {
- player.setPlayWhenReady(false);
- }
- if (playeraudio != null) {
- playeraudio.pause();
- }
- try {
- visualizerView.onPause();
- } catch (Exception ignored) {
- }
- }
-
- @Override
- public void onDestroy() {
- try {
- if (visualizerView != null) {
- visualizerView.release();
- }
- if (player != null) {
- player.release();
- }
- if (playeraudio != null) {
- playeraudio.release();
- }
- } catch (Exception ignored) {
- }
- super.onDestroy();
- }
-
- @Override
- public void onResume() {
- super.onResume();
- if (player != null) {
- player.setPlayWhenReady(true);
- }
- if (playeraudio != null) {
- playeraudio.start();
- }
- try {
- visualizerView.onResume();
- } catch (Exception e) {
- }
- }
-
- @Override
- protected void onPostResume() {
- super.onPostResume();
- FullScreencall(false);
- }
-
- public void FullScreencall(Boolean shouldFullscreen) {
- if (Build.VERSION.SDK_INT < 19) {
- View v = this.getWindow().getDecorView();
- if (shouldFullscreen) {
- v.setSystemUiVisibility(View.GONE);
- } else {
- v.setSystemUiVisibility(View.VISIBLE);
- }
- } else {
- View decorView = getWindow().getDecorView();
- if (shouldFullscreen) {
- decorView.setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_IMMERSIVE
- // Set the content to appear under the system bars so that the
- // content doesn't resize when the system bars hide and show.
- | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- // Hide the nav bar and status bar
- | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_FULLSCREEN
- | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
- } else {
- decorView.setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
- }
- }
- }
-
- @Override
- public void onUpdateProgress(int progressPercentage) {
- progress.setText(String.format("%s%%", String.valueOf(progressPercentage)));
- pbar_inf.setProgress(progressPercentage);
- }
-
-
- private void hideSystemUI() {
- View mDecorView = getWindow().getDecorView();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- mDecorView.setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_FULLSCREEN
- | View.SYSTEM_UI_FLAG_IMMERSIVE);
- }
- }
-
-}
diff --git a/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java b/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java
index e553a95d1..e84090347 100644
--- a/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java
@@ -143,20 +143,16 @@ public class SlideMediaActivity extends BaseActivity implements OnDownloadInterf
public void onClick(View view) {
int position = mPager.getCurrentItem();
Attachment attachment = attachments.get(position);
- if (attachment.getType().toLowerCase().equals("video") || attachment.getType().toLowerCase().equals("audio") || attachment.getType().toLowerCase().equals("gifv") || attachment.getType().toLowerCase().equals("web")) { ;
- new HttpsConnection(getApplicationContext(), Helper.getLiveInstance(getApplicationContext())).download(attachment.getUrl(), SlideMediaActivity.this);
- } else {
- if (Build.VERSION.SDK_INT >= 23) {
- if (ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE);
- } else {
- Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl());
- downloadID = -1;
- }
+ if (Build.VERSION.SDK_INT >= 23) {
+ if (ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE);
} else {
Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl());
downloadID = -1;
}
+ } else {
+ Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl());
+ downloadID = -1;
}
}
});
@@ -202,7 +198,7 @@ public class SlideMediaActivity extends BaseActivity implements OnDownloadInterf
registerReceiver(onDownloadComplete,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
String description = attachments.get(mediaPosition-1).getDescription();
handler = new Handler();
- if( description != null && description.trim().length() > 0 ){
+ if( description != null && description.trim().length() > 0 && description.trim().compareTo("null") != 0 ){
media_description.setText(description);
media_description.setVisibility(View.VISIBLE);
@@ -226,7 +222,7 @@ public class SlideMediaActivity extends BaseActivity implements OnDownloadInterf
handler.removeCallbacksAndMessages(null);
}
handler = new Handler();
- if( description != null && description.trim().length() > 0 ){
+ if( description != null && description.trim().length() > 0 && description.trim().compareTo("null") != 0){
media_description.setText(description);
media_description.setVisibility(View.VISIBLE);
@@ -280,7 +276,7 @@ public class SlideMediaActivity extends BaseActivity implements OnDownloadInterf
handler.removeCallbacksAndMessages(null);
}
handler = new Handler();
- if( description != null && description.trim().length() > 0 ){
+ if( description != null && description.trim().length() > 0 && description.trim().compareTo("null") != 0){
media_description.setText(description);
media_description.setVisibility(View.VISIBLE);
diff --git a/app/src/main/java/app/fedilab/android/client/HttpsConnection.java b/app/src/main/java/app/fedilab/android/client/HttpsConnection.java
index f43cc3625..0a5cb6520 100644
--- a/app/src/main/java/app/fedilab/android/client/HttpsConnection.java
+++ b/app/src/main/java/app/fedilab/android/client/HttpsConnection.java
@@ -36,16 +36,11 @@ import net.gotev.uploadservice.UploadStatusDelegate;
import org.apache.poi.util.IOUtils;
import org.json.JSONObject;
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Authenticator;
import java.net.HttpURLConnection;
@@ -70,20 +65,13 @@ import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
import app.fedilab.android.R;
-import app.fedilab.android.activities.MainActivity;
-import app.fedilab.android.activities.MediaActivity;
+import app.fedilab.android.activities.SlideMediaActivity;
import app.fedilab.android.activities.TootActivity;
-import app.fedilab.android.asynctasks.UpdateAccountInfoAsyncTask;
-import app.fedilab.android.client.Entities.Account;
-import app.fedilab.android.client.Entities.Attachment;
import app.fedilab.android.client.Entities.Error;
-import app.fedilab.android.fragments.DisplayPlaylistsFragment;
+
import app.fedilab.android.helper.FileNameCleaner;
import app.fedilab.android.helper.Helper;
import app.fedilab.android.interfaces.OnDownloadInterface;
-import app.fedilab.android.interfaces.OnRetrieveAttachmentInterface;
-import app.fedilab.android.sqlite.AccountDAO;
-import app.fedilab.android.sqlite.Sqlite;
/**
@@ -718,9 +706,9 @@ public class HttpsConnection {
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
downloadedFileSize += bytesRead;
- if (context instanceof MediaActivity) {
+ if (context instanceof SlideMediaActivity) {
final int currentProgress = (downloadedFileSize * 100) / contentSize;
- ((MediaActivity) context).runOnUiThread(new Runnable() {
+ ((SlideMediaActivity) context).runOnUiThread(new Runnable() {
public void run() {
listener.onUpdateProgress(currentProgress > 0 ? currentProgress : 101);
}
@@ -735,8 +723,8 @@ public class HttpsConnection {
listener.onDownloaded(saveFilePath, downloadUrl, null);
}
});
- if (context instanceof MediaActivity)
- ((MediaActivity) context).runOnUiThread(new Runnable() {
+ if (context instanceof SlideMediaActivity)
+ ((SlideMediaActivity) context).runOnUiThread(new Runnable() {
public void run() {
listener.onDownloaded(saveFilePath, downloadUrl, null);
}
@@ -750,8 +738,8 @@ public class HttpsConnection {
listener.onDownloaded(null, downloadUrl, error);
}
});
- if (context instanceof MediaActivity)
- ((MediaActivity) context).runOnUiThread(new Runnable() {
+ if (context instanceof SlideMediaActivity)
+ ((SlideMediaActivity) context).runOnUiThread(new Runnable() {
public void run() {
listener.onDownloaded(null, downloadUrl, error);
}
@@ -806,9 +794,9 @@ public class HttpsConnection {
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
downloadedFileSize += bytesRead;
- if (context instanceof MediaActivity) {
+ if (context instanceof SlideMediaActivity) {
final int currentProgress = (downloadedFileSize * 100) / contentSize;
- ((MediaActivity) context).runOnUiThread(new Runnable() {
+ ((SlideMediaActivity) context).runOnUiThread(new Runnable() {
public void run() {
listener.onUpdateProgress(currentProgress > 0 ? currentProgress : 101);
}
@@ -823,8 +811,8 @@ public class HttpsConnection {
listener.onDownloaded(saveFilePath, downloadUrl, null);
}
});
- if (context instanceof MediaActivity)
- ((MediaActivity) context).runOnUiThread(new Runnable() {
+ if (context instanceof SlideMediaActivity)
+ ((SlideMediaActivity) context).runOnUiThread(new Runnable() {
public void run() {
listener.onDownloaded(saveFilePath, downloadUrl, null);
}
@@ -838,8 +826,8 @@ public class HttpsConnection {
listener.onDownloaded(null, downloadUrl, error);
}
});
- if (context instanceof MediaActivity)
- ((MediaActivity) context).runOnUiThread(new Runnable() {
+ if (context instanceof SlideMediaActivity)
+ ((SlideMediaActivity) context).runOnUiThread(new Runnable() {
public void run() {
listener.onDownloaded(null, downloadUrl, error);
}
diff --git a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java
index cc7a6ea7b..bc63e2aa0 100644
--- a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java
+++ b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java
@@ -14,7 +14,6 @@ package app.fedilab.android.drawers;
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
* see . */
-import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
@@ -32,11 +31,9 @@ import android.os.Handler;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.core.app.ActivityOptionsCompat;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
-import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -98,7 +95,6 @@ import es.dmoral.toasty.Toasty;
import app.fedilab.android.R;
import app.fedilab.android.activities.CustomSharingActivity;
import app.fedilab.android.activities.MainActivity;
-import app.fedilab.android.activities.MediaActivity;
import app.fedilab.android.activities.ShowAccountActivity;
import app.fedilab.android.activities.ShowConversationActivity;
import app.fedilab.android.activities.TootActivity;
diff --git a/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java
index 529dd33d4..0b25640e1 100644
--- a/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java
+++ b/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java
@@ -23,20 +23,16 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
-import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.core.app.ActivityOptionsCompat;
import androidx.core.content.ContextCompat;
import androidx.cardview.widget.CardView;
-import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -52,7 +48,6 @@ import android.widget.AdapterView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
-import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -80,7 +75,6 @@ import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
-import app.fedilab.android.activities.MediaActivity;
import app.fedilab.android.activities.PixelfedComposeActivity;
import app.fedilab.android.activities.SlideMediaActivity;
import app.fedilab.android.activities.TootActivity;
diff --git a/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java b/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java
index 3af139302..4dd7607c9 100644
--- a/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java
+++ b/app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java
@@ -16,7 +16,6 @@ package app.fedilab.android.drawers;
import android.app.Activity;
-import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -36,7 +35,6 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AlertDialog;
-import androidx.core.app.ActivityOptionsCompat;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.SimpleTarget;
@@ -45,10 +43,8 @@ import com.smarteist.autoimageslider.SliderViewAdapter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
-import java.util.List;
import app.fedilab.android.R;
-import app.fedilab.android.activities.MediaActivity;
import app.fedilab.android.activities.PixelfedComposeActivity;
import app.fedilab.android.activities.SlideMediaActivity;
import app.fedilab.android.asynctasks.UpdateDescriptionAttachmentAsyncTask;
diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java
index b1cf674f5..e82216dca 100644
--- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java
+++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java
@@ -38,12 +38,9 @@ import androidx.annotation.NonNull;
import androidx.appcompat.widget.SwitchCompat;
import androidx.appcompat.widget.TooltipCompat;
import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.core.app.ActivityCompat;
-import androidx.core.app.ActivityOptionsCompat;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
-import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -90,7 +87,6 @@ import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
-import com.bumptech.glide.load.resource.bitmap.FitCenter;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
import com.bumptech.glide.request.RequestOptions;
@@ -128,7 +124,6 @@ import app.fedilab.android.client.Entities.Account;
import app.fedilab.android.client.Entities.Application;
import app.fedilab.android.client.Entities.Attachment;
import app.fedilab.android.client.Entities.Card;
-import app.fedilab.android.client.Entities.Conversation;
import app.fedilab.android.client.Entities.Emojis;
import app.fedilab.android.client.Entities.Error;
import app.fedilab.android.client.Entities.ManageTimelines;
@@ -145,7 +140,6 @@ import app.fedilab.android.helper.Helper;
import app.fedilab.android.helper.MastalabAutoCompleteTextView;
import app.fedilab.android.interfaces.OnPostStatusActionInterface;
import app.fedilab.android.interfaces.OnRetrieveImageInterface;
-import app.fedilab.android.interfaces.OnRetrieveRelationshipInterface;
import app.fedilab.android.interfaces.OnRetrieveRelationshipQuickReplyInterface;
import app.fedilab.android.interfaces.OnRetrieveSearcAccountshInterface;
import app.fedilab.android.interfaces.OnRetrieveSearchInterface;
@@ -165,7 +159,6 @@ import app.fedilab.android.R;
import app.fedilab.android.activities.BaseMainActivity;
import app.fedilab.android.activities.CustomSharingActivity;
import app.fedilab.android.activities.MainActivity;
-import app.fedilab.android.activities.MediaActivity;
import app.fedilab.android.activities.PeertubeActivity;
import app.fedilab.android.activities.ShowAccountActivity;
import app.fedilab.android.activities.ShowConversationActivity;
@@ -190,7 +183,6 @@ import static android.content.Context.MODE_PRIVATE;
import static app.fedilab.android.activities.BaseMainActivity.mPageReferenceMap;
import static app.fedilab.android.activities.BaseMainActivity.mutedAccount;
import static app.fedilab.android.activities.BaseMainActivity.social;
-import static app.fedilab.android.activities.MainActivity.currentLocale;
import static app.fedilab.android.helper.Helper.changeDrawableColor;
diff --git a/app/src/main/res/layout/activity_media.xml b/app/src/main/res/layout/activity_media.xml
deleted file mode 100644
index 46574e542..000000000
--- a/app/src/main/res/layout/activity_media.xml
+++ /dev/null
@@ -1,282 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file