51 lines
1.3 KiB
Plaintext
51 lines
1.3 KiB
Plaintext
import MediaPlayer from "android.media.MediaPlayer"
|
|
import File from 'java.io.File';
|
|
import FileOutputStream from 'java.io.FileOutputStream';
|
|
export class xAudio {
|
|
audio:MediaPlayer;
|
|
constructor(){
|
|
this.audio = new MediaPlayer();
|
|
}
|
|
play(src:string){
|
|
|
|
|
|
this.audio.stop();
|
|
this.audio.release()
|
|
this.audio = new MediaPlayer();
|
|
let assetManager = UTSAndroid.getAppContext()!.getAssets();
|
|
// 加载free.mp3 资源
|
|
const listAssets = assetManager.list("");
|
|
let filename = src+".mp3";
|
|
let isExites = listAssets?.contains(filename)??false
|
|
|
|
if(!isExites) return;
|
|
let afd = assetManager.openFd(filename);
|
|
try {
|
|
// 使用android 自带的媒体组件进行播放
|
|
let mediaPlayer = this.audio;
|
|
mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
|
|
mediaPlayer.prepare();
|
|
mediaPlayer.start();
|
|
class audioCompleted implements MediaPlayer.OnCompletionListener{
|
|
override onCompletion(m:MediaPlayer|null){
|
|
// if(m!=null){
|
|
// m.release()
|
|
// }
|
|
}
|
|
}
|
|
mediaPlayer.setOnCompletionListener(new audioCompleted())
|
|
} catch (e: Exception) {
|
|
console.log("AudioPlayer", "Error setting data source: ",e)
|
|
|
|
} finally {
|
|
// 确保关闭文件描述符
|
|
afd.close()
|
|
}
|
|
}
|
|
stop(){
|
|
// this.audio.stop();
|
|
}
|
|
destory(){
|
|
// this.audio.release()
|
|
}
|
|
} |