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.
- Host: GitHub
- URL: https://github.com/mkaflowski/HybridMediaPlayer
- Owner: mkaflowski
- Created: 2016-11-09T12:21:01.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-07-25T10:44:59.000Z (9 months ago)
- Last Synced: 2024-08-07T23:49:01.607Z (8 months ago)
- Language: Java
- Homepage:
- Size: 1.47 MB
- Stars: 73
- Watchers: 4
- Forks: 35
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-video - 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 Ex... (Video Players & Playback Libraries / Mobile Players)
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
```