@martin-juul/nativescript-astreamer
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

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

Method Description
initFromFile(options: AudioPlayerOptions): Promise Initialize player instance with a file without auto-playing.
playFromFile(options: AudioPlayerOptions): Promise Auto-play from a file.
initFromUrl(options: AudioPlayerOptions): Promise Initialize player instance from a url without auto-playing.
playFromUrl(options: AudioPlayerOptions): Promise Auto-play from a url.
pause(): Promise<boolean> Pause playback.
resume(): void Resume playback.
seekTo(time:number): Promise<boolean> Seek to position of track (in seconds).
dispose(): Promise<boolean> Free up resources when done playing audio.
isAudioPlaying(): boolean Determine if player is playing.
getAudioTrackDuration(): Promise<string> Duration of media file assigned to the player.
playAtTime(time: number): void - iOS Only Play 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

Property Description
ios Get the native ios AVAudioPlayer instance.
android Get the native android MediaPlayer instance.
debug: boolean Set true to enable debugging console logs (default false).
currentTime: number Get the current time in the media file's duration.
volume: number Get/Set the player volume. Value range from 0 to 1.

License

MIT

Demo App

🚫

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)

Package Sidebar

Install

npm i @martin-juul/nativescript-astreamer

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

63.4 kB

Total Files

19

Last publish

Collaborators

  • martinjuul