Giter Site home page Giter Site logo

abnercosta / chromecast-react-native Goto Github PK

View Code? Open in Web Editor NEW

This project forked from moomtech/chromecast-react-native

0.0 1.0 0.0 1.11 MB

Transmissão de mídia com React Native e Google Cast

Home Page: https://youtu.be/hrOkNrHSLDU

JavaScript 29.88% Starlark 3.98% Java 17.42% Ruby 19.08% Objective-C 29.63%

chromecast-react-native's Introduction

Moom

IMPORTANTE: Funciona apenas para televisões com Chromecast built-in ou com Chromecast. Nem todas as televisões são suportadas pois usam tecnologias diferentes. Saiba mais sobre o Chromecast built-in.

Transmissão de vídeos com Chromecast e React Native utilizando o Google Cast, que é a biblioteca oficial da Google para transmissões. Antes de seguir para as configurações necessárias, é importante ressaltar que até então, não há nada oficial ou um padrão para utilizar o Google Cast com React Native e que a biblioteca e configurações utilizadas são os passos iniciais para tornar o feito algo padronizado. Por último, a biblioteca em questão está em desenvolvimento e não está cobrindo todas as funcionalidades que o Google Cast oferece e, o mais importante, é que você ajude colaborando com novas features e resoluções de problemas.

Instalação

yarn add react-native-google-cast

ou

yarn add react-native-google-cast

Configurações

iOS
  • Dentro de ios/NOME-DO-APP/AppDelegate.m adicione
#import <GoogleCast/GoogleCast.h>
  • Ainda dentro de AppDelegate.m adicione o seguinte trecho de código antes do return YES;
GCKDiscoveryCriteria *criteria = [[GCKDiscoveryCriteria alloc] initWithApplicationID:kGCKDefaultMediaReceiverApplicationID];
GCKCastOptions* options = [[GCKCastOptions alloc] initWithDiscoveryCriteria:criteria];
[GCKCastContext setSharedInstanceWithOptions:options];

Obs: Para receivers customizados, adicione no lugar do kGCKDefaultMediaReceiverApplicationID seu ApplicationID (ex: @"E038DH47"). Leia mais em Styled Media Receiver

  • Dentro da pasta iOS no arquivo Podfile adicione
pod 'react-native-google-cast/NoBluetooth', path: '../node_modules/react-native-google-cast/ios/'
  • Por fim, abra a pasta iOS no seu terminal e rode o comando
pod install
  • Tudo pronto. Inicie sua aplicação
npx react-native run-ios
Android
  • Dentro de android/app/src/main/AndroidManifest.xml adicione
<activity android:name="com.reactnative.googlecast.GoogleCastExpandedControlsActivity" />

<meta-data
    android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
    android:value="com.reactnative.googlecast.GoogleCastOptionsProvider" />
  • Adicione dentro de android/app/build.gradle
implementation "com.google.android.gms:play-services-cast-framework:+"
  • Dentro de android/app/src/main/java/com/cast/MainActivity.java adicione
import com.facebook.react.GoogleCastActivity;

public class MainActivity extends GoogleCastActivity {
  // ..
}

IMPORTANTE: Com o emulador do Android Studio, o botão de Google Cast não aparece, e não sei ao certo porque isso ocorre, mas em contrapartida, emulando a aplicação com um dispositivo físico, funciona perfeitamente. Outra forma é utilizar o scrcpy, que conectando seu dispositivo físico via USB ao computador, você consegue emular seu celular.

Independente da forma como você for emular sua aplicação, inicie sua aplicação com

npx react-native run-android

Caso você deseje customizar seu receiver, siga os passos abaixos:

  • Dentro de android/app/src/main/AndroidManifest.xml altere o nome com.reactnative.googlecast.GoogleCastOptionsProvider para com.nativecast.CastOptionsProvider como no exemplo abaixo
<meta-data
    android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
    android:value="com.nativecast.CastOptionsProvider" />
  • No caminho android/app/src/main/java/com/NOME-DO-APP crie um arquivo chamado CastOptionsProvider.java e adicione o trecho de código
package com.nativecast;

import com.reactnative.googlecast.GoogleCastOptionsProvider;
import android.content.Context;
import com.google.android.gms.cast.framework.CastOptions;

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;
  }
}
  • Para finalizar, acesse o arquivo strings.xml que fica em android/app/src/main/res/values/strings.xml e acrescente uma nova string dentro de <resources> com sua app id
<string name="app_id">E038DH47</string>

Expanded Controller no Android

Por padrão, o Expanded Controller que é a tela que controla a reprodução das mídias, vem diferente no Android e no iOS, não em questão de design, mas sim nos botões e nas cores do título, descrição e botão de cast. No iOS, por padrão, vem os botões (legenda, voltar 30s, play/pause, avançar 30s e volume) e cores branca no cabeçalho. Já no Android, os botões são (legenda, anterior, play/pause, próximo e volume) e o cabeçalho está todo preto, dificultando a visibilidade.

Android device by Moom

Como corrigir os botões do Expanded Controller no Android
  • Dentro de android/app/src/main/res/values crie um novo arquivo chamado arrays.xml e insira o trecho de código abaixo
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="cast_expanded_controller_control_buttons">
        <!-- Para outros botões olhe esse link: https://developers.google.com/cast/docs/android_sender/customize_ui#choose-mini-controller-buttons -->
        <item>@id/cast_button_type_closed_caption</item>
        <item>@id/cast_button_type_rewind_30_seconds</item>
        <item>@id/cast_button_type_forward_30_seconds</item>
        <item>@id/cast_button_type_mute_toggle</item>
    </array>
</resources>
  • Por fim, dentro da pasta values, também tem um arquivo chamado styles.xml. Adicione o seguinte trecho de código dentro de <resources>
<style name="CustomCastExpandedController" parent="CastExpandedController">
    <item name="castControlButtons">@array/cast_expanded_controller_control_buttons</item>
</style>

E no <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> adicione

<item name="castExpandedControllerToolbarStyle">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
<item name="castExpandedControllerStyle">@style/CustomCastExpandedController</item>

Links que você pode querer ler

Para informações mais detalhadas sobre problemas de compatibilidade, usabilidade, APIs, consulte o repositório oficial do projeto: react-native-google-cast

Dúvida sobre o que você precisa para criar um Cast App? App components

Dúvida sobre mídias suportadas pelo Google Cast? Supported Media

Dúvida sobre estilos do receiver? Styled Media Receiver

Google Cast SDK Developer Console

chromecast-react-native's People

Contributors

victorhermes avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.