Skip to content

Commit

Permalink
Add support for Android TV and Chromecast, change the post and channn…
Browse files Browse the repository at this point in the history
…el placeholder, use native Exoplayer instead of MXPlayer, quality selection, subtitles support and TV fix category bug on player page
  • Loading branch information
msal4 committed Jun 6, 2019
1 parent 1fd3d14 commit 6651ecc
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 25 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package halasat.first.task.com;

import android.content.Context;

import com.google.android.gms.cast.CastMediaControlIntent;

import com.google.android.gms.cast.MediaMetadata;
import com.google.android.gms.cast.framework.CastOptions;
import com.google.android.gms.cast.framework.OptionsProvider;
import com.google.android.gms.cast.framework.SessionProvider;
import com.google.android.gms.cast.framework.media.CastMediaOptions;
import com.google.android.gms.cast.framework.media.ImagePicker;
import com.google.android.gms.cast.framework.media.MediaIntentReceiver;
import com.google.android.gms.cast.framework.media.NotificationOptions;
import com.google.android.gms.common.images.WebImage;

import java.util.Arrays;
import java.util.List;

public class CastOptionsProvider implements OptionsProvider {
@Override
public CastOptions getCastOptions(Context context) {
NotificationOptions notificationOptions =
new NotificationOptions.Builder()
.setActions(Arrays.asList( // up to 5
MediaIntentReceiver.ACTION_REWIND,
MediaIntentReceiver.ACTION_TOGGLE_PLAYBACK,
MediaIntentReceiver.ACTION_FORWARD,
MediaIntentReceiver.ACTION_DISCONNECT
), new int[]{0, 1, 2}) // Show in compat (condensed) view
.setSkipStepMs(NotificationOptions.SKIP_STEP_TEN_SECONDS_IN_MS)
.setTargetActivityClassName(
MainActivity.class.getName())
.build();

CastMediaOptions mediaOptions = new CastMediaOptions.Builder()
.setNotificationOptions(notificationOptions)
.setExpandedControllerActivityClassName(
MainActivity.class.getName())
// careful!
//.setMediaIntentReceiverClassName(CustomReceiver.java)
.setImagePicker(new ImagePickerImpl())
.build();

CastOptions castOptions = new CastOptions.Builder()
.setReceiverApplicationId(CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID)
.setStopReceiverApplicationWhenEndingSession(true)
.setCastMediaOptions(mediaOptions)
.build();
return castOptions;
}

@Override
public List<SessionProvider> getAdditionalSessionProviders(Context context) {
return null;
}

private class ImagePickerImpl extends ImagePicker {
@Override
public WebImage onPickImage(MediaMetadata mediaMetadata, int type) {


// int imageIndex;
//
// if (type == IMAGE_TYPE_MEDIA_ROUTE_CONTROLLER_DIALOG_BACKGROUND) {
// imageIndex = 0;
// } else {
// imageIndex = 1;
// }

if (mediaMetadata.hasImages() && mediaMetadata.getImages().size() > 0) {
return mediaMetadata.getImages().get(0);
}
return null;
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ public void setVideoUri(String videoUri) {
this.videoUri = Uri.parse(videoUri);
}


public void setSubtitleUri(String subtitleUri) {
this.subtitleUri = Uri.parse(subtitleUri);
}
Expand All @@ -64,7 +63,6 @@ public void onCreate(Bundle savedInstanceState) {
setSubtitleUri(bundle.getString("subsUrl"));
setVideoUri(bundle.getString("videoUrl"));
title = bundle.getString("title");
Log.d("sdfhjsad", bundle.getString("subsUrl"));
}


Expand Down
23 changes: 0 additions & 23 deletions android/app/src/main/res/layout/activity_main.xml

This file was deleted.

6 changes: 6 additions & 0 deletions android/app/src/main/res/layout/video_player.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

</LinearLayout>
13 changes: 13 additions & 0 deletions android/app/src/main/res/menu/change_quality_menu.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/media_route_menu_item"
android:title="@string/media_route_menu_title"
app:actionProviderClass="androidx.mediarouter.app.MediaRouteActionProvider"
app:showAsAction="always" />

<item
android:title="@string/change_quality"
android:id="@+id/change_quality" />
</menu>
3 changes: 3 additions & 0 deletions android/app/src/main/res/values/dimens.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<resources>
<dimen name="fab_margin">16dp</dimen>
</resources>

0 comments on commit 6651ecc

Please sign in to comment.