NativeScript plugin to play and record audio files for Android and iOS.
Do you need assistance on your project or plugin? Contact the nStudio team anytime at team@nstudio.io to get up to speed with the best practices in mobile and web app development.
Installation
tns plugin add nativescript-audio
Recording Permissions
iOS
To record, add the following to your project's Info.plist file in the App_Resources/iOS directory (see here for example).
<key>NSMicrophoneUsageDescription</key>
<string>The app needs to access your Microphone to record.</string>
Android
To record, add the following permission to your AndroidManifest.xml file in App_Resources/Android/ directory (see here for example).
import{TNSPlayer}from'nativescript-audio';exportclassYourClass{private_player: TNSPlayer;constructor(){this._player=newTNSPlayer();this._player.debug=true;// set true to enable TNSPlayer console logs for debugging.this._player.initFromFile({audioFile: '~/audio/song.mp3',// ~ = app directoryloop: false,completeCallback: this._trackComplete.bind(this),errorCallback: this._trackError.bind(this)}).then(()=>{this._player.getAudioTrackDuration().then(duration=>{// iOS: duration is in seconds// Android: duration is in millisecondsconsole.log(`song duration:`,duration);});});}publictogglePlay(){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 succesfullyconsole.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 errorconsole.log('extra info on the error:',args.extra);}}
Javascript Example:
constaudio=require('nativescript-audio');constplayer=newaudio.TNSPlayer();constplayerOptions={audioFile: 'http://some/audio/file.mp3',loop: false,completeCallback: function(){console.log('finished playing');},errorCallback: function(errorObject){console.log(JSON.stringify(errorObject));},infoCallback: function(args){console.log(JSON.stringify(args));}};player.playFromUrl(playerOptions).then(function(res){console.log(res);}).catch(function(err){console.log('something went wrong...',err);});