1.0.1 • Published 4 years ago

react-native-google-cast-android v1.0.1

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

react-native-google-cast-android

Instalation

yarn add react-native-google-cast-android

Setup Android

  1. 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 the getPackages() method
  2. 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')
  3. Insert the following lines inside the dependencies block in android/app/build.gradle:

    dependencies {
      implementation project(':react-native-google-cast')
    }
  4. 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 root android/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,
  },