react-native-omplayer
Version:
video player for react-native
160 lines (129 loc) • 3.68 kB
JavaScript
/**
* Created by lcg on 2017/6/16.
*/
import { Platform, NativeModules } from 'react-native';
import eventManager from './eventManager';
const OMAudioPlayerManager = Platform.OS === 'android' ? NativeModules.OMAudioPlayerManagerIjk : NativeModules.OMAudioPlayerManager;
// const OMAudioPlayerManager = NativeModules.OMAudioPlayerManagerIjk;
export default class Audio {
constructor(listeners){
this._listeners = listeners;
}
init(){
const self = this;
return new Promise((resolve, reject) => {
OMAudioPlayerManager.createAudioPlayer((err, id) => {
if (err){
reject(err);
}
else {
self._id = id;
resolve();
}
});
})
.then(() => {
eventManager.addAudio(self._id, this);
});
}
uninit(){
if (this._id){
eventManager.removeAudio(this._id);
OMAudioPlayerManager.releaseAudioPlayer(this._id);
this._id = null;
}
}
setToken(token) {
if (token) {
OMAudioPlayerManager.setToken(token, this._id);
}
}
setSrc(src){
let uri = src;
if (uri && uri.match(/^\//)) {
uri = `file://${uri}`;
}
if(this._id){
OMAudioPlayerManager.setSrc(uri, this._id);
}
}
setRepeat(repeat){
if(this._id){
OMAudioPlayerManager.setRepeat(repeat, this._id);
}
}
setMuted(muted){
if(this._id){
OMAudioPlayerManager.setMuted(muted, this._id);
}
}
setVolume(volume){
if(this._id){
OMAudioPlayerManager.setVolume(volume, this._id);
}
}
setRate(rate){
if (this._id){
OMAudioPlayerManager.setRate(rate, this._id);
}
}
seek(seek){
if (this._id){
OMAudioPlayerManager.seek(seek, this._id);
}
}
play(){
if(this._id){
OMAudioPlayerManager.play(this._id);
}
}
pause(){
if(this._id){
OMAudioPlayerManager.pause(this._id);
}
}
stop(){
if(this._id){
OMAudioPlayerManager.stop(this._id);
}
}
onLoadStart(event){
this._listeners.onLoadStart && this._listeners.onLoadStart(event);
}
onLoad(event){
this._listeners.onLoad && this._listeners.onLoad(event);
}
onLoadStalled(event) {
this._listeners.onLoadStalled && this._listeners.onLoadStalled(event);
}
onLoadResume(event) {
this._listeners.onLoadResume && this._listeners.onLoadResume(event);
}
onError(event){
this._listeners.onError && this._listeners.onError(event);
}
onProgress(event){
this._listeners.onProgress && this._listeners.onProgress(event);
}
onSeek(event){
this._listeners.onSeek && this._listeners.onSeek(event);
}
onEnd(event){
this._listeners.onEnd && this._listeners.onEnd(event);
}
onReadyForPlay(event){
this._listeners.onReadyForPlay && this._listeners.onReadyForPlay(event);
}
onStalled(event){
this._listeners.onStalled && this._listeners.onStalled(event);
}
onResume(event){
this._listeners.onResume && this._listeners.onResume(event);
}
onRateChange(event){
this._listeners.onRateChange && this._listeners.onRateChange(event);
}
onPlayerError(event){
this._listeners.onPlayerError && this._listeners.onPlayerError(event);
}
}