react-native-google-cast-android
v1.0.1
Published
React Native implementation for the Google Cast SDK for Android
Downloads
11
Readme
react-native-google-cast-android
Instalation
yarn add react-native-google-cast-android
Setup Android
Open up
android/app/src/main/java/[...]/MainApplication.java
- Add
import com.reactnative.googlecast.GoogleCastPackage;
to the imports at the top of the file - Add
new GoogleCastPackage()
to the list returned by thegetPackages()
method
- Add
Append the following lines to
android/settings.gradle
:include ':react-native-google-cast' project(':react-native-google-cast').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-google-cast-android/android')
Insert the following lines inside the
dependencies
block inandroid/app/build.gradle
:dependencies { implementation project(':react-native-google-cast') }
By default, the react-native-google-cast package automatically loads the latest version (
+
) of the Cast SDK and support libraries as its dependencies. To use a specific version, set it in the rootandroid/build.gradle
:buildscript { ext { buildToolsVersion = "27.0.3" minSdkVersion = 16 compileSdkVersion = 27 targetSdkVersion = 26 supportLibVersion = "26.1.0" castFrameworkVersion = '16.1.2' } }
Make sure the device you're using (also applies to emulators) has Google Play Services installed.
Add to AndroidManifest.xml
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="com.reactnative.googlecast.GoogleCastOptionsProvider" />
Alternatively, you may provide your own OptionsProvider class. For example, to use a custom receiver app:
package com.foo;
import android.content.Context;
import com.google.android.gms.cast.framework.CastOptions;
import com.reactnative.googlecast.GoogleCastOptionsProvider;
public class CastOptionsProvider extends GoogleCastOptionsProvider {
@Override
public CastOptions getCastOptions(Context context) {
CastOptions castOptions = new CastOptions.Builder()
.setReceiverApplicationId(context.getString(R.string.app_id))
.build();
return castOptions;
}
}
and don't forget to set your AndroidManifest.xml:
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="com.foo.GoogleCastOptionsProvider" />
as well as add this to the app/build.gradle:
implementation "com.google.android.gms:play-services-cast-framework:18.0.0"
Change your MainActivity to extend GoogleCastActivity.
import com.facebook.react.GoogleCastActivity;
public class MainActivity extends GoogleCastActivity {
// ..
}
If you already extend other class than ReactActivity (e.g. if you use react-native-navigation) or integrate React Native in native app, make sure that the Activity is a descendant of android.support.v7.app.AppCompatActivity. Then add CastContext.getSharedInstance(this); to your Activity's onCreate method (this lazy loads the Google Cast context).
Usage
import GoogleCast, { CastButton } from 'react-native-google-cast-android'
...
//cast button (Visible if has a device nearby)
<CastButton
tintColor='#fff' //Tint color of button
style={{}} //Inherits View props
triggersDefaultCastDialog={true} //Default true, if false application must handle cast session start
accessibilityLabel=''
/>
//cast the video
GoogleCast.castMedia(video)
Video model
To cast a video, the object must be in MediaInfo pattern
mediaUrl: String,
imageUrl:
String,
title: String,
subtitle:
String,
studio: String,
streamDuration: Number, // seconds
contentType: 'video/mp4', // Optional, default is "video/mp4"
playPosition: Number, // seconds
customData: {
// Optional, your custom object that will be passed to as customData to reciever
customKey: String,
},