diff --git a/android/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java b/android/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java
index be3174bd..b761bb0b 100644
--- a/android/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java
+++ b/android/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java
@@ -19,18 +19,15 @@ import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.Timeline;
-import com.google.android.exoplayer2.ext.ima.ImaAdsLoader;
import com.google.android.exoplayer2.Tracks;
import com.google.android.exoplayer2.text.Cue;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
import com.google.android.exoplayer2.ui.AdViewProvider;
-import com.google.android.exoplayer2.ui.AdOverlayInfo;
import com.google.android.exoplayer2.ui.SubtitleView;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.video.VideoSize;
import java.util.List;
-import java.util.ArrayList;
@TargetApi(16)
public final class ExoPlayerView extends FrameLayout implements AdViewProvider {
diff --git a/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java b/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java
index c637be07..821690f6 100644
--- a/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java
+++ b/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java
@@ -103,7 +103,6 @@ import com.google.common.collect.ImmutableList;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.CookiePolicy;
-import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -622,7 +621,6 @@ class ReactExoplayerView extends FrameLayout implements
new DefaultRenderersFactory(getContext())
.setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF);
- Log.d("MEDIAAA", mediaDataSourceFactory.toString());
MediaSource.Factory mediaSourceFactory = new DefaultMediaSourceFactory(mediaDataSourceFactory)
.setLocalAdInsertionComponents(unusedAdTagUri -> adsLoader, exoPlayerView);
@@ -638,7 +636,7 @@ class ReactExoplayerView extends FrameLayout implements
audioBecomingNoisyReceiver.setListener(self);
bandwidthMeter.addEventListener(new Handler(), self);
setPlayWhenReady(!isPaused);
- playerNeedsSource = false;
+ playerNeedsSource = true;
PlaybackParameters params = new PlaybackParameters(rate, 1f);
player.setPlaybackParameters(params);
@@ -986,6 +984,7 @@ class ReactExoplayerView extends FrameLayout implements
case AudioManager.AUDIOFOCUS_LOSS:
this.hasAudioFocus = false;
eventEmitter.audioFocusChanged(false);
+ pausePlayback();
audioManager.abandonAudioFocus(this);
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
diff --git a/examples/basic/index.android.js b/examples/basic/index.android.js
deleted file mode 100644
index 7c45c812..00000000
--- a/examples/basic/index.android.js
+++ /dev/null
@@ -1,236 +0,0 @@
-'use strict';
-
-import React, {
- Component
-} from 'react';
-
-import {
- AppRegistry,
- StyleSheet,
- Text,
- TouchableOpacity,
- View,
-} from 'react-native';
-
-import Video from 'react-native-video';
-
-const adTagUrl = "https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/"
-+ "ad_rule_samples&ciu_szs=300x250&ad_rule=1&impl=s&gdfp_req=1&env=vp"
-+ "&output=vmap&unviewed_position_start=1&cust_params=deployment%3Ddevsite"
-+ "%26sample_ar%3Dpremidpost&cmsid=496&vid=short_onecue&correlator=";
-
-class VideoPlayer extends Component {
-
- state = {
- rate: 1,
- volume: 1,
- muted: false,
- resizeMode: 'contain',
- duration: 0.0,
- currentTime: 0.0,
- paused: true,
- };
-
- video: Video;
-
- onLoad = (data) => {
- this.setState({ duration: data.duration });
- };
-
- onProgress = (data) => {
- this.setState({ currentTime: data.currentTime });
- };
-
- onEnd = () => {
- this.setState({ paused: true })
- this.video.seek(0)
- };
-
- onAudioBecomingNoisy = () => {
- this.setState({ paused: true })
- };
-
- onAudioFocusChanged = (event: { hasAudioFocus: boolean }) => {
- this.setState({ paused: !event.hasAudioFocus })
- };
-
- getCurrentTimePercentage() {
- if (this.state.currentTime > 0) {
- return parseFloat(this.state.currentTime) / parseFloat(this.state.duration);
- }
- return 0;
- };
-
- renderRateControl(rate) {
- const isSelected = (this.state.rate === rate);
-
- return (
- { this.setState({ rate }) }}>
-
- {rate}x
-
-
- );
- }
-
- renderResizeModeControl(resizeMode) {
- const isSelected = (this.state.resizeMode === resizeMode);
-
- return (
- { this.setState({ resizeMode }) }}>
-
- {resizeMode}
-
-
- )
- }
-
- renderVolumeControl(volume) {
- const isSelected = (this.state.volume === volume);
-
- return (
- { this.setState({ volume }) }}>
-
- {volume * 100}%
-
-
- )
- }
-
- render() {
- const flexCompleted = this.getCurrentTimePercentage() * 100;
- const flexRemaining = (1 - this.getCurrentTimePercentage()) * 100;
-
- return (
-
- this.setState({ paused: !this.state.paused })}
- >
-
-
-
-
-
- {this.renderRateControl(0.25)}
- {this.renderRateControl(0.5)}
- {this.renderRateControl(1.0)}
- {this.renderRateControl(1.5)}
- {this.renderRateControl(2.0)}
-
-
-
- {this.renderVolumeControl(0.5)}
- {this.renderVolumeControl(1)}
- {this.renderVolumeControl(1.5)}
-
-
-
- {this.renderResizeModeControl('cover')}
- {this.renderResizeModeControl('contain')}
- {this.renderResizeModeControl('stretch')}
-
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- justifyContent: 'center',
- alignItems: 'center',
- backgroundColor: 'black',
- },
- fullScreen: {
- position: 'absolute',
- top: 0,
- left: 0,
- bottom: 0,
- right: 0,
- },
- controls: {
- backgroundColor: 'transparent',
- borderRadius: 5,
- position: 'absolute',
- bottom: 20,
- left: 20,
- right: 20,
- },
- progress: {
- flex: 1,
- flexDirection: 'row',
- borderRadius: 3,
- overflow: 'hidden',
- },
- innerProgressCompleted: {
- height: 20,
- backgroundColor: '#cccccc',
- },
- innerProgressRemaining: {
- height: 20,
- backgroundColor: '#2C2C2C',
- },
- generalControls: {
- flex: 1,
- flexDirection: 'row',
- borderRadius: 4,
- overflow: 'hidden',
- paddingBottom: 10,
- },
- rateControl: {
- flex: 1,
- flexDirection: 'row',
- justifyContent: 'center',
- },
- volumeControl: {
- flex: 1,
- flexDirection: 'row',
- justifyContent: 'center',
- },
- resizeModeControl: {
- flex: 1,
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
- },
- controlOption: {
- alignSelf: 'center',
- fontSize: 11,
- color: 'white',
- paddingLeft: 2,
- paddingRight: 2,
- lineHeight: 12,
- },
-});
-
-AppRegistry.registerComponent('VideoPlayer', () => VideoPlayer);
diff --git a/examples/basic/index.ios.js b/examples/basic/index.ios.js
deleted file mode 100644
index fbe2541c..00000000
--- a/examples/basic/index.ios.js
+++ /dev/null
@@ -1,455 +0,0 @@
-'use strict';
-import React, {
- Component
-} from 'react';
-
-import {
- Alert,
- AppRegistry,
- Platform,
- StyleSheet,
- Text,
- TouchableOpacity,
- View,
-} from 'react-native';
-
-import Video,{FilterType} from 'react-native-video';
-
-const adTagUrl = "https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/"
-+ "ad_rule_samples&ciu_szs=300x250&ad_rule=1&impl=s&gdfp_req=1&env=vp"
-+ "&output=vmap&unviewed_position_start=1&cust_params=deployment%3Ddevsite"
-+ "%26sample_ar%3Dpremidpost&cmsid=496&vid=short_onecue&correlator=";
-
-const filterTypes = [
- FilterType.NONE,
- FilterType.INVERT,
- FilterType.MONOCHROME,
- FilterType.POSTERIZE,
- FilterType.FALSE,
- FilterType.MAXIMUMCOMPONENT,
- FilterType.MINIMUMCOMPONENT,
- FilterType.CHROME,
- FilterType.FADE,
- FilterType.INSTANT,
- FilterType.MONO,
- FilterType.NOIR,
- FilterType.PROCESS,
- FilterType.TONAL,
- FilterType.TRANSFER,
- FilterType.SEPIA
-];
-
-class VideoPlayer extends Component {
- constructor(props) {
- super(props);
- this.onLoad = this.onLoad.bind(this);
- this.onProgress = this.onProgress.bind(this);
- this.onBuffer = this.onBuffer.bind(this);
- }
- state = {
- rate: 1,
- volume: 1,
- muted: false,
- resizeMode: 'contain',
- duration: 0.0,
- currentTime: 0.0,
- controls: false,
- paused: true,
- skin: 'custom',
- ignoreSilentSwitch: null,
- mixWithOthers: null,
- isBuffering: false,
- filter: FilterType.NONE,
- filterEnabled: true
- };
-
- onLoad(data) {
- console.log('On load fired!');
- this.setState({duration: data.duration});
- }
-
- onProgress(data) {
- this.setState({currentTime: data.currentTime});
- }
-
- onBuffer({ isBuffering }: { isBuffering: boolean }) {
- this.setState({ isBuffering });
- }
-
- getCurrentTimePercentage() {
- if (this.state.currentTime > 0) {
- return parseFloat(this.state.currentTime) / parseFloat(this.state.duration);
- } else {
- return 0;
- }
- }
-
- setFilter(step) {
- let index = filterTypes.indexOf(this.state.filter) + step;
-
- if (index === filterTypes.length) {
- index = 0;
- } else if (index === -1) {
- index = filterTypes.length - 1;
- }
-
- this.setState({
- filter: filterTypes[index]
- })
- }
-
- renderSkinControl(skin) {
- const isSelected = this.state.skin == skin;
- const selectControls = skin == 'native' || skin == 'embed';
- return (
- { this.setState({
- controls: selectControls,
- skin: skin
- }) }}>
-
- {skin}
-
-
- );
- }
-
- renderRateControl(rate) {
- const isSelected = (this.state.rate == rate);
-
- return (
- { this.setState({rate: rate}) }}>
-
- {rate}x
-
-
- )
- }
-
- renderResizeModeControl(resizeMode) {
- const isSelected = (this.state.resizeMode == resizeMode);
-
- return (
- { this.setState({resizeMode: resizeMode}) }}>
-
- {resizeMode}
-
-
- )
- }
-
- renderVolumeControl(volume) {
- const isSelected = (this.state.volume == volume);
-
- return (
- { this.setState({volume: volume}) }}>
-
- {volume * 100}%
-
-
- )
- }
-
- renderIgnoreSilentSwitchControl(ignoreSilentSwitch) {
- const isSelected = (this.state.ignoreSilentSwitch == ignoreSilentSwitch);
-
- return (
- { this.setState({ignoreSilentSwitch: ignoreSilentSwitch}) }}>
-
- {ignoreSilentSwitch}
-
-
- )
- }
-
- renderMixWithOthersControl(mixWithOthers) {
- const isSelected = (this.state.mixWithOthers == mixWithOthers);
-
- return (
- { this.setState({mixWithOthers: mixWithOthers}) }}>
-
- {mixWithOthers}
-
-
- )
- }
-
- renderCustomSkin() {
- const flexCompleted = this.getCurrentTimePercentage() * 100;
- const flexRemaining = (1 - this.getCurrentTimePercentage()) * 100;
-
- return (
-
- {this.setState({paused: !this.state.paused})}}>
-
-
-
-
-
- {this.renderSkinControl('custom')}
- {this.renderSkinControl('native')}
- {this.renderSkinControl('embed')}
-
- {
- (this.state.filterEnabled) ?
-
- {
- this.setFilter(-1)
- }}>
- Previous Filter
-
- {
- this.setFilter(1)
- }}>
- Next Filter
-
- : null
- }
-
-
-
- {this.renderRateControl(0.5)}
- {this.renderRateControl(1.0)}
- {this.renderRateControl(2.0)}
-
-
-
- {this.renderVolumeControl(0.5)}
- {this.renderVolumeControl(1)}
- {this.renderVolumeControl(1.5)}
-
-
-
- {this.renderResizeModeControl('cover')}
- {this.renderResizeModeControl('contain')}
- {this.renderResizeModeControl('stretch')}
-
-
-
- {
- (Platform.OS === 'ios') ?
- <>
-
- {this.renderIgnoreSilentSwitchControl('ignore')}
- {this.renderIgnoreSilentSwitchControl('obey')}
-
-
- {this.renderMixWithOthersControl('mix')}
- {this.renderMixWithOthersControl('duck')}
-
- > : null
- }
-
-
-
-
-
-
-
-
-
-
- );
- }
-
- renderNativeSkin() {
- const videoStyle = this.state.skin == 'embed' ? styles.nativeVideoControls : styles.fullScreen;
- return (
-
-
-
-
-
-
- {this.renderSkinControl('custom')}
- {this.renderSkinControl('native')}
- {this.renderSkinControl('embed')}
-
- {
- (this.state.filterEnabled) ?
-
- {
- this.setFilter(-1)
- }}>
- Previous Filter
-
- {
- this.setFilter(1)
- }}>
- Next Filter
-
- : null
- }
-
-
-
- {this.renderRateControl(0.5)}
- {this.renderRateControl(1.0)}
- {this.renderRateControl(2.0)}
-
-
-
- {this.renderVolumeControl(0.5)}
- {this.renderVolumeControl(1)}
- {this.renderVolumeControl(1.5)}
-
-
-
- {this.renderResizeModeControl('cover')}
- {this.renderResizeModeControl('contain')}
- {this.renderResizeModeControl('stretch')}
-
-
-
- {
- (Platform.OS === 'ios') ?
- <>
-
- {this.renderIgnoreSilentSwitchControl('ignore')}
- {this.renderIgnoreSilentSwitchControl('obey')}
-
-
- {this.renderMixWithOthersControl('mix')}
- {this.renderMixWithOthersControl('duck')}
-
- > : null
- }
-
-
-
-
- );
- }
-
- render() {
- return this.state.controls ? this.renderNativeSkin() : this.renderCustomSkin();
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- justifyContent: 'center',
- alignItems: 'center',
- backgroundColor: 'black',
- },
- fullScreen: {
- position: 'absolute',
- top: 0,
- left: 0,
- bottom: 0,
- right: 0,
- },
- controls: {
- backgroundColor: "transparent",
- borderRadius: 5,
- position: 'absolute',
- bottom: 44,
- left: 4,
- right: 4,
- },
- progress: {
- flex: 1,
- flexDirection: 'row',
- borderRadius: 3,
- overflow: 'hidden',
- },
- innerProgressCompleted: {
- height: 20,
- backgroundColor: '#cccccc',
- },
- innerProgressRemaining: {
- height: 20,
- backgroundColor: '#2C2C2C',
- },
- generalControls: {
- flex: 1,
- flexDirection: 'row',
- overflow: 'hidden',
- paddingBottom: 10,
- },
- skinControl: {
- flex: 1,
- flexDirection: 'row',
- justifyContent: 'center',
- },
- rateControl: {
- flex: 1,
- flexDirection: 'row',
- justifyContent: 'center',
- },
- volumeControl: {
- flex: 1,
- flexDirection: 'row',
- justifyContent: 'center',
- },
- resizeModeControl: {
- flex: 1,
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center'
- },
- ignoreSilentSwitchControl: {
- flex: 1,
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center'
- },
- mixWithOthersControl: {
- flex: 1,
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center'
- },
- controlOption: {
- alignSelf: 'center',
- fontSize: 11,
- color: "white",
- paddingLeft: 2,
- paddingRight: 2,
- lineHeight: 12,
- },
- nativeVideoControls: {
- top: 184,
- height: 300
- }
-});
-
-AppRegistry.registerComponent('VideoPlayer', () => VideoPlayer);
diff --git a/examples/basic/ios/VideoPlayer.xcodeproj/project.pbxproj b/examples/basic/ios/VideoPlayer.xcodeproj/project.pbxproj
index 137ce71c..3baa0b3e 100644
--- a/examples/basic/ios/VideoPlayer.xcodeproj/project.pbxproj
+++ b/examples/basic/ios/VideoPlayer.xcodeproj/project.pbxproj
@@ -319,7 +319,6 @@
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
- English,
en,
Base,
);
diff --git a/examples/basic/react-native.config.js b/examples/basic/react-native.config.js
deleted file mode 100644
index 7aee24ce..00000000
--- a/examples/basic/react-native.config.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-module.exports = {
- reactNativePath: fs.realpathSync(path.resolve(require.resolve('react-native-windows/package.json'), '..')),
- dependencies: {
- 'react-native-video-inc-ads': {
- platforms: {
- android: {
- sourceDir:
- '../node_modules/react-native-video-inc-ads/android-exoplayer',
- },
- },
- },
- },
-};