An open API service indexing awesome lists of open source software.

https://github.com/mkaflowski/HybridMediaPlayer

Android music and video player. Uses ExoPlayer 2 and MediaPlayer for lower APIs and makes using ExoMediaPlayer easier. If you need advanced options such as handling Chromecast it is delivered by ExoMediaPlayer class.
https://github.com/mkaflowski/HybridMediaPlayer

Last synced: 5 months ago
JSON representation

Android music and video player. Uses ExoPlayer 2 and MediaPlayer for lower APIs and makes using ExoMediaPlayer easier. If you need advanced options such as handling Chromecast it is delivered by ExoMediaPlayer class.

Awesome Lists containing this project

README

        

# HybridMediaPlayer
Android music player from URL. Uses ExoPlayer and MediaPlayer for lower APIs.

## Installation

To use the library, first include it your project using Gradle.

Add JitPack in your root build.gradle at the end of repositories:
```
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
```

If not enabled already, you also need to turn on Java 8 support in all `build.gradle` files depending on ExoPlayer, by adding the following to the `android` section:

```gradle
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
```

Add it as a dependency in your app's build.gradle file:
```
dependencies {
compile 'com.github.mkaflowski:HybridMediaPlayer:${version}' //CHANGE IT TO CURRENT VERSION
}
```

## How to use

```java
HybridMediaPlayer mediaPlayer = HybridMediaPlayer.getInstance(context);
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();

mediaPlayer.setPlayerView(this, playerView);

//it goes to STATE_IDLE on the end of sources in Chromecast
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnErrorListener(this);
mediaPlayer.setOnPreparedListener(this);

mediaPlayer.play();
mediaPlayer.seekTo(1500);
mediaPlayer.pause();

mediaPlayer.setVolume(0.5f);

mediaPlayer.release();
```

### Methods for ExoPlayer only

```java
ExoMediaPlayer mediaPlayer = new ExoMediaPlayer(this)
mediaPlayer.setDataSource(url1, url2, url3, ...);
mediaPlayer.prepare();

//for proper Chromecast handling
mediaPlayer.setInitialWindowNum(1); // start track number
mediaPlayer.setDataSource(mediaSourceInfoList);
mediaPlayer.setCastPlayer(castContext);

mediaPlayer.isCasting()

//setting video view:
mediaPlayer.setPlayerView(this, playerView);

mediaPlayer.setOnPositionDiscontinuityListener(this);
mediaPlayer.setOnTracksChangedListener(this);

mediaPlayer.hasVideo();
mediaPlayer.seekTo(trackNum,time);

mediaPlayer.setSupportingSystemEqualizer(true);
//FOR EDITING PLAYLIST
mediaPlayer.getMediaSource();

mediaPlayer.release();
```
### Creating MediaSourceInfo for proper Chromecast handling example

```java
MediaSourceInfo source1 = new MediaSourceInfo.Builder().setUrl(url)
.setTitle("Podcast Stream")
.setImageUrl("https://cdn.dribbble.com/users/20781/screenshots/573506/podcast_logo.jpg")
.build();
MediaSourceInfo source2 = new MediaSourceInfo.Builder().setUrl(url3)
.setTitle("Movie")
.setImageUrl("http://www.pvhc.net/img29/amkulkkbogfvmihgspru.png")
.isVideo(true)
.build();

List sources = new ArrayList<>();
sources.add(source1);
sources.add(source2);

mediaPlayer.setDataSource(sources);
mediaPlayer.setCastPlayer(castContext);
```

Register your CastOptionProvider (or default) in manifest file:

```xml

```