1.0.0 • Published 4 years ago

@martin-juul/nativescript-astreamer v1.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

nativescript-astreamer


Forked from https://github.com/nstudio/nativescript-audio

Changes

  • Removed recording capability
  • Fixed iOS player

Installation

tns plugin add nativescript-astreamer


Android Native Classes

iOS Native Classes

Usage

TypeScript Example

import { NSAudioPlayer } from 'nativescript-astreamer';

export class YourClass {
  private player: NSAudioPlayer;

  constructor() {
    this.player = new NSAudioPlayer();
    this.player.debug = true; // set true to enable TNSPlayer console logs for debugging.

    (async () => {
      await this.player.initFromFile({
        audioFile: '~/audio/song.mp3', // ~ = app directory
        loop: false,
        completeCallback: this._trackComplete.bind(this),
        errorCallback: this._trackError.bind(this)
      })

      // iOS: duration is in seconds
      // Android: duration is in milliseconds
      const duration = this.player.getAudioTrackDuration();
      console.log(`duration: ${duration}`);
     })();
  }

  public togglePlay() {
    if (this.player.isAudioPlaying()) {
      this.player.pause();
    } else {
      this.player.play();
    }
  }

  private _trackComplete(args: any) {
    console.log('reference back to player:', args.player);
    // iOS only: flag indicating if completed succesfully
    console.log('whether song play completed successfully:', args.flag);
  }

  private _trackError(args: any) {
    console.log('reference back to player:', args.player);
    console.log('the error:', args.error);
    // Android only: extra detail on error
    console.log('extra info on the error:', args.extra);
  }
}

API

Player

NSAudioPlayer Methods

MethodDescription
initFromFile(options: AudioPlayerOptions): PromiseInitialize player instance with a file without auto-playing.
playFromFile(options: AudioPlayerOptions): PromiseAuto-play from a file.
initFromUrl(options: AudioPlayerOptions): PromiseInitialize player instance from a url without auto-playing.
playFromUrl(options: AudioPlayerOptions): PromiseAuto-play from a url.
pause(): Promise<boolean>Pause playback.
resume(): voidResume playback.
seekTo(time:number): Promise<boolean>Seek to position of track (in seconds).
dispose(): Promise<boolean>Free up resources when done playing audio.
isAudioPlaying(): booleanDetermine if player is playing.
getAudioTrackDuration(): Promise<string>Duration of media file assigned to the player.
playAtTime(time: number): void - iOS OnlyPlay audio track at specific time of duration.
changePlayerSpeed(speed: number): void - On Android Only API 23+Change the playback speed of the media player.

NSAudioPlayer Instance Properties

PropertyDescription
iosGet the native ios AVAudioPlayer instance.
androidGet the native android MediaPlayer instance.
debug: booleanSet true to enable debugging console logs (default false).
currentTime: numberGet the current time in the media file's duration.
volume: numberGet/Set the player volume. Value range from 0 to 1.

License

MIT

Demo App

:no_entry_sign:

The demo has not been migrated yet.

  • fork/clone the repository
  • cd into the src directory
  • execute npm run demo.android or npm run demo.ios (scripts are located in the scripts of the package.json in the src directory if you are curious)