npm i --save nativescript-audio-ssi
- 版本:4.0.6
- GitHub: https://github.com/simplec-dev/nativescript-audio
- NPM: https://npmjs.net.cn/package/nativescript-audio-ssi
- 下载量
- 昨天:0
- 上周:0
- 上个月:129
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
示例屏幕
示例用法
这是一个简单的示例,说明您如何为给定文件重用播放器实例
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。 |
您可以通过各个平台的ios
和android
获取器访问底层本地类实例,这将返回给您
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
代替。