@martin-juul/nativescript-astreamer
NativeScript plugin to play audio from filesystem and network.
npm i --save @martin-juul/nativescript-astreamer
- Version: 1.0.0
- GitHub: https://github.com/martin-juul/nativescript-astreamer
- NPM: https://www.npmjs.com/package/%40martin-juul%2Fnativescript-astreamer
- Downloads:
- Last Day: 0
- Last Week: 0
- Last Month: 0
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
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
ornpm run demo.ios
(scripts are located in thescripts
of the package.json in thesrc
directory if you are curious)