react-native-audio-polyfill

html Audio class polyfill for react-native. You can use Audio for android,ios without modification to browser code.

Usage

import Audio from 'react-native-audio-polyfill'

const audio1 = new Audio()

audio1.onload = () => {
  console.log('audio loaded')
  audio1.play()
}

Play local files

audio1.addEventListener('loadeddata', () => audio1.play())
audio1.addEventListener('error', err => console.log('audio error:', err)
audio1.src = './test.mp3'
audio1.load()

Play remote files

audio1.addEventListener('loadeddata', () => audio1.play())
audio1.addEventListener('error', err => console.log('audio error:', err)
audio1.src = 'http://www.music.helsinki.fi/tmt/opetus/uusmedia/esim/a2002011001-e02-128k.mp3'
audio1.load()

Play assets in native

import asset1 from './test.mp3'

audio1.addEventListener('loadeddata', () => audio1.play())
audio1.addEventListener('error', err => console.log('audio error:', err)
audio1.src = asset1
audio1.load()

Install

npm install react-native-audio-polyfill

Add it to your project

react-native link

Coverage

functions

  • [ ] addTextTrack()
  • [ ] canPlayType()
  • [x] load()
  • [x] play()
  • [x] pause()

properties

  • [ ] audioTracks
  • [x] autoplay
  • [x] buffered // only android
  • [ ] controller
  • [ ] controls
  • [ ] crossOrigin
  • [ ] currentSrc
  • [x] currentTime
  • [x] defaultMuted
  • [x] defaultPlaybackRate
  • [x] duration
  • [x] ended
  • [x] error
  • [x] loop
  • [x] mediaGroup
  • [x] muted
  • [ ] networkState
  • [x] paused
  • [x] playbackRate
  • [x] played
  • [x] preload
  • [ ] readyState
  • [x] seekable
  • [x] seeking
  • [x] src
  • [ ] startDate
  • [ ] textTracks
  • [ ] videoTracks
  • [x] volume

event

  • [ ] abort
  • [x] canplay
  • [ ] canplaythrough
  • [x] durationchange
  • [ ] emptied
  • [x] ended
  • [x] error
  • [x] loadeddata
  • [x] loadedmetadata
  • [x] loadstart
  • [x] pause
  • [x] play
  • [x] playing
  • [x] progress // only android
  • [x] ratechange
  • [x] seeked
  • [x] seeking
  • [ ] stalled
  • [ ] suspend
  • [x] timeupdate
  • [x] volumechange
  • [ ] waiting

TODO

  • canPlayType support.
  • Create audio component with controls=true.
  • Buffering progress for ios.

GitHub