native-script-audio-ssi
NativeScript 插件,用于录制和播放音频。
npm i --save nativescript-audio-ssi

npm npm

NativeScript-Audio

NativeScript 插件,用于在 Android 和 iOS 上播放和录制音频文件。

此插件基于 Brad Martin 的插件。它修复了在从 URL 初始化完成之前调用 dispose 的问题。

使用以下原生类

Android

iOS

注意:如果您使用录音功能,则需要授予 iOS 设备访问麦克风的权限。如果不这样做,则您的应用程序可能会在设备上崩溃,并且在苹果的审查过程中可能会被拒绝。为此,请将以下键添加到您的 app/App_Resources/iOS/Info.plist 文件中

<key>NSMicrophoneUsageDescription</key>
<string>Recording Practice Sessions</string>

安装

该插件与 Nativescript 3.x 和 2.x 版本兼容。使用以下命令安装

tns plugin add nativescript-audio

示例屏幕

AudioExample

示例用法

这是一个简单的示例,说明您如何为给定文件重用播放器实例

import { TNSPlayer } from 'nativescript-audio';

export class YourClass {
private _player: TNSPlayer;

constructor() {
this._player = new TNSPlayer();
this._player.initFromFile({
audioFile: '~/audio/song.mp3', // ~ = app directory
loop: 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 milliseconds
console.log(`song 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);
}
}

以及一个简单的 JavaScript 示例

var audio = require("nativescript-audio");

var player = new audio.TNSPlayer();
var playerOptions = {
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 () {
console.log("something went wrong...");
})

API

TNSRecorder

方法 描述
TNSRecorder.CAN_RECORD(): boolean 确定是否准备好录制。
start(options: AudioRecorderOptions): Promise 开始录制文件。
stop(): void 停止录制。
pause(): Promise<any> 暂停录制
resume(): Promise<any> 继续录制。
dispose(): void 在完成录音后释放系统资源。

TNSPlayer

方法 描述
initFromFile( { audioFile: string, loop: boolean, completeCallback?: Function, errorCallback?: Function, infoCallback?: Function; } ): Promise 使用文件初始化播放器实例,不自动播放。
playFromFile( { audioFile: string, loop: boolean, completeCallback?: Function, errorCallback?: Function, infoCallback?: Function; } ): Promise 从文件自动播放。
initFromUrl( { audioFile: string, loop: boolean, completeCallback?: Function, errorCallback?: Function, infoCallback?: Function; } ): Promise 从 URL 初始化播放器实例,不自动播放。
playFromUrl( { audioFile: string, loop: boolean, completeCallback?: Function, errorCallback?: Function, infoCallback?: Function; } ): Promise 从 URL 自动播放。
pause(): Promise<boolean> 暂停播放。
resume(): void 继续播放。
seekTo(time:number): Promise<boolean> 跳转到指定位置。
dispose(): Promise<boolean> 在播放音频完成后释放资源。
isAudioPlaying(): boolean 确定播放器是否正在播放。
getAudioTrackDuration(): Promise<string> 分配给 mediaPlayer 的媒体文件的持续时间。
currentTime: number 获取媒体文件持续时间的当前时间。
volume: void 获取/设置播放器音量。值范围从 0 到 1。

您可以通过各个平台的iosandroid获取器访问底层本地类实例,这将返回给您

  • AVAudioPlayer(iOS)
  • MediaPlayer(Android)

平台特定

iOS:

playAtTime(time: number):在特定时间播放。

为什么使用TNS前缀名称?

TNS代表Telerik NativeScript

iOS使用以NS为前缀的类(源于古老的NeXTSTEP时代):https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/

为了避免与iOS本地类混淆,使用TNS代替。

许可证

MIT