Some fixes

This commit is contained in:
Thomas 2020-11-18 18:15:45 +01:00
parent dbd068d95f
commit 84e3264726
6 changed files with 140 additions and 171 deletions

View File

@ -11,8 +11,8 @@ android {
minSdkVersion 21
targetSdkVersion 30
versionCode 25
versionName "1.7.0"
versionCode 26
versionName "1.8.0-beta-1"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

View File

@ -1259,23 +1259,137 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd
0,
height,
0);
animate.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
animate.setDuration(500);
binding.videoParams.startAnimation(animate);
}
@Override
public void onItemClicked(MenuItemVideo.actionType action) {
binding.videoParamsSubmenu.setVisibility(View.VISIBLE);
List<MenuItemView> items = new ArrayList<>();
switch (action) {
case RESOLUTION:
binding.subMenuTitle.setText(R.string.pickup_resolution);
int position = 0;
for (File file : peertube.getFiles()) {
if (file.getResolutions() != null) {
if (file.getResolutions().getLabel().compareTo("0p") != 0) {
MenuItemView item = new MenuItemView();
item.setId(position);
item.setLabel(file.getResolutions().getLabel());
if (file.getResolutions().getLabel().compareTo(currentResolution) == 0) {
item.setSelected(true);
}
items.add(item);
position++;
}
}
}
break;
case SPEED:
binding.subMenuTitle.setText(R.string.playback_speed);
items = new ArrayList<>();
items.add(new MenuItemView(25, "0.25x", player.getPlaybackParameters().speed == 0.25));
items.add(new MenuItemView(50, "0.5x", player.getPlaybackParameters().speed == 0.5));
items.add(new MenuItemView(75, "0.75x", player.getPlaybackParameters().speed == 0.75));
items.add(new MenuItemView(100, getString(R.string.normal), player.getPlaybackParameters().speed == 1));
items.add(new MenuItemView(125, "1.25x", player.getPlaybackParameters().speed == 1.25));
items.add(new MenuItemView(150, "1.5x", player.getPlaybackParameters().speed == 1.5));
items.add(new MenuItemView(175, "1.75x", player.getPlaybackParameters().speed == 1.75));
items.add(new MenuItemView(200, "2x", player.getPlaybackParameters().speed == 2.0));
break;
case CAPTION:
binding.subMenuTitle.setText(R.string.pickup_captions);
items = new ArrayList<>();
items.add(new MenuItemView(-1, "null", getString(R.string.none), currentCaption.compareTo("null") == 0));
int i = 0;
for (Caption caption : captions) {
items.add(new MenuItemView(i, caption.getLanguage().getId(), caption.getLanguage().getLabel(), currentCaption.compareTo(caption.getLanguage().getId()) == 0));
}
break;
}
MenuItemAdapter menuItemAdapter = new MenuItemAdapter(action, items);
binding.subMenuRecycler.setAdapter(menuItemAdapter);
menuItemAdapter.itemAction = this;
binding.subMenuRecycler.setLayoutManager(new LinearLayoutManager(PeertubeActivity.this));
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
TranslateAnimation animate = new TranslateAnimation(
0,
0,
height,
0);
animate.setDuration(500);
binding.videoParamsSubmenu.startAnimation(animate);
}
@Override
public void which(MenuItemVideo.actionType action, MenuItemView item) {
closeMainMenuOptions();
switch (action) {
case RESOLUTION:
String res = item.getLabel();
binding.loader.setVisibility(View.VISIBLE);
long position = player.getCurrentPosition();
PlayerControlView controlView = binding.doubleTapPlayerView.findViewById(R.id.exo_controller);
TextView resolution = controlView.findViewById(R.id.resolution);
currentResolution = res;
resolution.setText(String.format("%s", res));
if (mode == Helper.VIDEO_MODE_NORMAL) {
if (player != null)
player.release();
player = new SimpleExoPlayer.Builder(PeertubeActivity.this).build();
binding.mediaVideo.player(player);
binding.doubleTapPlayerView.setPlayer(player);
binding.loader.setVisibility(View.GONE);
startStream(
peertube.getFileUrl(res, PeertubeActivity.this),
peertube.getStreamingPlaylists().size() > 0 ? peertube.getStreamingPlaylists().get(0).getPlaylistUrl() : null,
true, position, null, null);
}
break;
case SPEED:
int speed = item.getId();
float ratio = (float) speed / 100;
PlaybackParameters param = new PlaybackParameters(ratio);
if (player != null) {
player.setPlaybackParameters(param);
}
break;
case CAPTION:
Uri uri = null;
if (item.getId() != -1) {
if (!sepiaSearch) {
uri = Uri.parse("https://" + getLiveInstance(PeertubeActivity.this) + captions.get(item.getId()).getCaptionPath());
} else {
uri = Uri.parse("https://" + peertubeInstance + captions.get(item.getId()).getCaptionPath());
}
}
currentCaption = item.getStrId();
long newPosition = player.getCurrentPosition();
if (player != null)
player.release();
TrackSelector trackSelector = new DefaultTrackSelector(PeertubeActivity.this, new AdaptiveTrackSelection.Factory());
player = new SimpleExoPlayer.Builder(PeertubeActivity.this).setTrackSelector(trackSelector).build();
binding.mediaVideo.player(player);
binding.doubleTapPlayerView.setPlayer(player);
startStream(
peertube.getFileUrl(null, PeertubeActivity.this),
null,
true,
newPosition,
uri,
item.getStrId()
);
break;
}
closeSubMenuMenuOptions();
}
public void closeMainMenuOptions() {
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
@ -1304,32 +1418,6 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd
}
public void openSubMenuMenuOptions() {
binding.videoParamsSubmenu.setVisibility(View.VISIBLE);
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
TranslateAnimation animate = new TranslateAnimation(
0,
0,
height,
0);
animate.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
animate.setDuration(500);
binding.videoParamsSubmenu.startAnimation(animate);
}
public void closeSubMenuMenuOptions() {
DisplayMetrics displayMetrics = new DisplayMetrics();
@ -1692,7 +1780,6 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd
if (binding.videoParamsSubmenu.getVisibility() == View.VISIBLE) {
closeSubMenuMenuOptions();
}
return true;
}
Rect viewRectParamsSub = new Rect();
binding.videoParamsSubmenu.getGlobalVisibleRect(viewRectParamsSub);
@ -1701,7 +1788,6 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd
if (binding.videoParams.getVisibility() == View.VISIBLE) {
closeMainMenuOptions();
}
return true;
}
}
return super.dispatchTouchEvent(event);
@ -1758,122 +1844,7 @@ public class PeertubeActivity extends AppCompatActivity implements CommentListAd
}
@Override
public void onItemClicked(MenuItemVideo.actionType action) {
List<MenuItemView> items = new ArrayList<>();
switch (action) {
case RESOLUTION:
binding.subMenuTitle.setText(R.string.pickup_resolution);
int position = 0;
for (File file : peertube.getFiles()) {
if (file.getResolutions() != null) {
if (file.getResolutions().getLabel().compareTo("0p") != 0) {
MenuItemView item = new MenuItemView();
item.setId(position);
item.setLabel(file.getResolutions().getLabel());
if (file.getResolutions().getLabel().compareTo(currentResolution) == 0) {
item.setSelected(true);
}
items.add(item);
position++;
}
}
}
break;
case SPEED:
binding.subMenuTitle.setText(R.string.playback_speed);
items = new ArrayList<>();
items.add(new MenuItemView(25, "0.25x", player.getPlaybackParameters().speed == 0.25));
items.add(new MenuItemView(50, "0.5x", player.getPlaybackParameters().speed == 0.5));
items.add(new MenuItemView(75, "0.75x", player.getPlaybackParameters().speed == 0.75));
items.add(new MenuItemView(100, getString(R.string.normal), player.getPlaybackParameters().speed == 1));
items.add(new MenuItemView(125, "1.25x", player.getPlaybackParameters().speed == 1.25));
items.add(new MenuItemView(150, "1.5x", player.getPlaybackParameters().speed == 1.5));
items.add(new MenuItemView(175, "1.75x", player.getPlaybackParameters().speed == 1.75));
items.add(new MenuItemView(200, "2x", player.getPlaybackParameters().speed == 2.0));
break;
case CAPTION:
binding.subMenuTitle.setText(R.string.pickup_captions);
items = new ArrayList<>();
items.add(new MenuItemView(-1, "null", getString(R.string.none), currentCaption.compareTo("null") == 0));
int i = 0;
for (Caption caption : captions) {
items.add(new MenuItemView(i, caption.getLanguage().getId(), caption.getLanguage().getLabel(), currentCaption.compareTo(caption.getLanguage().getId()) == 0));
}
break;
}
MenuItemAdapter menuItemAdapter = new MenuItemAdapter(action, items);
menuItemAdapter.itemAction = this;
binding.subMenuRecycler.setAdapter(menuItemAdapter);
binding.subMenuRecycler.setLayoutManager(new LinearLayoutManager(PeertubeActivity.this));
openSubMenuMenuOptions();
}
@Override
public void which(MenuItemVideo.actionType action, MenuItemView item) {
closeMainMenuOptions();
switch (action) {
case RESOLUTION:
String res = item.getLabel();
binding.loader.setVisibility(View.VISIBLE);
long position = player.getCurrentPosition();
PlayerControlView controlView = binding.doubleTapPlayerView.findViewById(R.id.exo_controller);
TextView resolution = controlView.findViewById(R.id.resolution);
currentResolution = res;
resolution.setText(String.format("%s", res));
if (mode == Helper.VIDEO_MODE_NORMAL) {
if (player != null)
player.release();
player = new SimpleExoPlayer.Builder(PeertubeActivity.this).build();
binding.mediaVideo.player(player);
binding.doubleTapPlayerView.setPlayer(player);
binding.loader.setVisibility(View.GONE);
startStream(
peertube.getFileUrl(res, PeertubeActivity.this),
peertube.getStreamingPlaylists().size() > 0 ? peertube.getStreamingPlaylists().get(0).getPlaylistUrl() : null,
true, position, null, null);
}
break;
case SPEED:
int speed = item.getId();
float ratio = (float) speed / 100;
PlaybackParameters param = new PlaybackParameters(ratio);
if (player != null) {
player.setPlaybackParameters(param);
}
break;
case CAPTION:
Uri uri = null;
if (item.getId() != -1) {
if (!sepiaSearch) {
uri = Uri.parse("https://" + getLiveInstance(PeertubeActivity.this) + captions.get(item.getId()).getCaptionPath());
} else {
uri = Uri.parse("https://" + peertubeInstance + captions.get(item.getId()).getCaptionPath());
}
}
currentCaption = item.getStrId();
long newPosition = player.getCurrentPosition();
if (player != null)
player.release();
TrackSelector trackSelector = new DefaultTrackSelector(PeertubeActivity.this, new AdaptiveTrackSelection.Factory());
player = new SimpleExoPlayer.Builder(PeertubeActivity.this).setTrackSelector(trackSelector).build();
binding.mediaVideo.player(player);
binding.doubleTapPlayerView.setPlayer(player);
startStream(
peertube.getFileUrl(null, PeertubeActivity.this),
null,
true,
newPosition,
uri,
item.getStrId()
);
break;
}
closeSubMenuMenuOptions();
}
enum videoOrientation {

View File

@ -15,15 +15,12 @@ package app.fedilab.fedilabtube.drawer;
* see <http://www.gnu.org/licenses>. */
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import java.util.List;
import app.fedilab.fedilabtube.client.MenuItemVideo;
@ -35,7 +32,6 @@ public class MenuAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final List<MenuItemVideo> menuItemVideos;
public ItemClicked itemClicked;
private Context context;
public MenuAdapter(List<MenuItemVideo> menuItemVideos) {
@ -56,7 +52,6 @@ public class MenuAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
context = parent.getContext();
DrawerMenuBinding itemBinding = DrawerMenuBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
return new ViewHolder(itemBinding);
}
@ -64,17 +59,13 @@ public class MenuAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder viewHolder, int i) {
context = viewHolder.itemView.getContext();
final ViewHolder holder = (ViewHolder) viewHolder;
final MenuItemVideo menuItemVideo = menuItemVideos.get(i);
holder.binding.menuIcon.setImageResource(menuItemVideo.getIcon());
holder.binding.title.setText(menuItemVideo.getTitle());
holder.binding.itemMenuContainer.setOnClickListener(v -> {
itemClicked.onItemClicked(menuItemVideo.getAction());
});
holder.binding.itemMenuContainer.setOnClickListener(v -> itemClicked.onItemClicked(menuItemVideo.getAction()));
}

View File

@ -131,7 +131,7 @@ public class TimelineVM extends AndroidViewModel {
retrofitPeertubeAPI = new RetrofitPeertubeAPI(_mContext, instance, null);
}
APIResponse apiResponse = retrofitPeertubeAPI.getVideos(videoId, myVideo);
if (Helper.isLoggedIn(_mContext) && !myVideo && instance == null) {
if (Helper.isLoggedIn(_mContext) && instance == null) {
if (apiResponse.getPeertubes() != null && apiResponse.getPeertubes().size() > 0 && apiResponse.getPeertubes().get(0) != null) {
APIResponse response = new RetrofitPeertubeAPI(_mContext).getRating(videoId);
if (response != null)

View File

@ -5,6 +5,8 @@
android:id="@+id/item_menu_container"
android:layout_width="match_parent"
android:layout_marginTop="10dp"
android:clickable="true"
android:focusable="true"
android:layout_height="wrap_content">
<ImageView

View File

@ -1,10 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/item_menu_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
android:layout_marginTop="10dp"
android:clickable="true"
android:focusable="true">
<RadioButton
android:id="@+id/radio"
@ -15,6 +18,7 @@
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:labelFor="@+id/radio"
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -23,5 +27,6 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/radio"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
tools:ignore="LabelFor" />
</androidx.constraintlayout.widget.ConstraintLayout>