Open pap5508 opened 2 months ago
Seems there is bug on android 14
public async playRecord( attachment = undefined, attachmentId = undefined, args, repeat: boolean = false ) { console.log("attachment.filepath: " + attachment.filepath); let recordedFile: File = null; console.log("1........................... "+ attachment.filepath); //Pause current playing file if another file is tapped and reset variables if (attachmentId !== this.currentPlayingAttachmentId && attachmentId !== this.currentPausedAttachmentId) { console.log("2........................... "+ attachment.filepath); try { if (this._player.isAudioPlaying()) { console.log("3........................... "+ attachment.filepath); await this.pauseRecord(this.currentPlayingAttachmentId); } } catch (error) { console.log("there was an error pausing the record"); } //reset for new file this.isPlaying = false; this.isPaused = false; this.tapped = false; timer.clearInterval(this.timerId); this.progressInMilliseconds = 0; this.progressInSeconds = 0; this.currentPlaytimeInMilliseconds = 0; this.currentPlaytimeInSeconds = 0; this.currentPausedAttachmentId = null; this.currentPlayingAttachmentId = null; this.remainingDuration = 0; this.changeDetectionRef.detectChanges(); this._player.dispose().then(() => console.log("player disposed")); } if (attachment.filepath && File.exists(attachment.filepath)) { console.log("4........................... "+ attachment.filepath); recordedFile = File.fromPath(attachment.filepath); } if ( !recordedFile || !attachment.filepath || !File.exists(attachment.filepath) ) { try { console.log("file not foumnd, try download"); var downloadparent = args.object.parent; var downloadActivityIndicator = this.downloadActivityIndicator ? this.downloadActivityIndicator.nativeElement : downloadparent.getViewById("DownloadActivityIndicator"); if (downloadActivityIndicator) { downloadActivityIndicator.busy = true; downloadActivityIndicator.visibility = "visible"; } this.changeDetectionRef.detectChanges(); await this.checkPermissions().then((granted) => { if (granted) { if (isAndroid) { return this.attachmentsService .downloadAttachment(attachment, this.chat.name) .then((fileExist) => { if (fileExist === "false" || fileExist == null) { return Promise.reject("file not found"); } else { recordedFile = File.fromPath(attachment.filepath); if (downloadActivityIndicator) { downloadActivityIndicator.busy = false; downloadActivityIndicator.visibility = "collapsed"; } this.changeDetectionRef.detectChanges(); return Promise.resolve(); } }); } else { return this.attachmentsService .iosAttachment(attachment, this.chat.name) .then((fileExist) => { if (fileExist == "false" || fileExist == null) { return Promise.reject("file not found"); } else { recordedFile = File.fromPath(attachment.filepath); if (downloadActivityIndicator) { downloadActivityIndicator.busy = false; downloadActivityIndicator.visibility = "collapsed"; } this.changeDetectionRef.detectChanges(); return Promise.resolve(); } }); } } }); if (!File.exists(recordedFile.path)) { console.log("download failed"); return; } } catch { console.log("could not dl file"); return; } } if (recordedFile === null) { console.log("no audio file found"); return; } if (this.isPaused && !repeat) { console.log("5........................... "+ attachment.filepath); this.isPaused = false; this.isPlaying = true; this.currentPausedAttachmentId = null; this.currentPlayingAttachmentId = attachmentId; this.changeDetectionRef.detectChanges(); this.tapped = false; this._player.resume(); if (!this._player.isAudioPlaying()) { this.isPaused = false; this.isPlaying = false; this.currentPlaytimeInMilliseconds = 0; this.currentPlaytimeInSeconds = 0; timer.clearInterval(this.timerId); this.changeDetectionRef.detectChanges(); return; } return; } console.log("RECORDED FILE : " + JSON.stringify(recordedFile)); const playerOptions: AudioPlayerOptions = { audioFile: recordedFile.path, loop: false, completeCallback: () => { console.log("6........................... "+ attachment.filepath); console.log("Audio file complete."); this.isPlaying = false; this.isPaused = false; this.tapped = false; timer.clearInterval(this.timerId); this.progressInMilliseconds = 0; this.progressInSeconds = 0; this.changeDetectionRef.detectChanges(); this.currentPausedAttachmentId = null; this.currentPlayingAttachmentId = null; this.remainingDuration = 0; this.changeDetectionRef.detectChanges(); if (!playerOptions.loop) { this._player.dispose().then(() => console.log("player disposed")); } }, errorCallback: (errorObject) => { console.log("7........................... "+ attachment.filepath); console.log(JSON.stringify(errorObject)); this.isPlaying = false; this.tapped = false; this.isPaused = false; this.currentPausedAttachmentId = null; this.currentPlayingAttachmentId = null; this.remainingDuration = 0; this.progressInMilliseconds = 0; this.progressInSeconds = 0; if (!this.isDisposed) { this.changeDetectionRef.detectChanges(); } }, infoCallback: (infoObject) => { console.log("8........................... "+ attachment.filepath); console.log(JSON.stringify(infoObject)); }, }; this._player.playFromFile(playerOptions).then( (played) => { console.log("9........................... "+ JSON.stringify(playerOptions)); console.log("file played", played); this.isPlaying = true; this.isPaused = false; this.currentPausedAttachmentId = null; this.currentPlayingAttachmentId = attachmentId; this.changeDetectionRef.detectChanges(); this._player.getAudioTrackDuration().then((duration) => { this.audioTrackDurationInSeconds = platform.isAndroid ? this.roundMillisecondsToNearestSecond(+duration) : +duration; this.audioTrackDurationInMilliseconds = platform.isAndroid ? +duration : +duration * 1000; // start audio duration tracking this.startDurationTracking( this.audioTrackDurationInSeconds, this.audioTrackDurationInMilliseconds ); }); }, (err) => { console.log("error playFromFile"); this.isPlaying = false; this.isPaused = false; this.currentPausedAttachmentId = null; this.currentPlayingAttachmentId = null; } ); } Unhandled Promise rejection: Could not request audio focus ; Zone: <root> ; Task: null ; Value: Error: Could not request audio focus Error: Could not request audio focus at file: app/webpack:/TestApp/node_modules/nativescript-audio/android/player.js:260:0 at new ZoneAwarePromise (file: app/webpack:/TestApp/node_modules/zone.js/fesm2015/zone.js:1429:0) at TNSPlayer.play (file: app/webpack:/TestApp/node_modules/nativescript-audio/android/player.js:250:0) at Object.onPrepared (file: app/webpack:/TestApp/node_modules/nativescript-audio/android/player.js:211:0)
package.json `{
"description": "NativeScript Application", "version": "1.1.21", "license": "MIT", "name": "TestApp", "readme": "NativeScript Application", "repository": "", "dependencies": { "@angular/animations": "~15.1.0", "@angular/common": "~15.1.0", "@angular/compiler": "~15.1.0", "@angular/core": "~15.1.0", "@angular/forms": "~15.1.0", "@angular/platform-browser": "~15.1.0", "@angular/platform-browser-dynamic": "~15.1.0", "@angular/router": "~15.1.0", "@finalsite/rich-text-editor": "^0.1.1", "@nativescript-community/ui-barcodeview": "^3.6.1", "@nativescript-community/ui-document-picker": "^1.1.12", "@nativescript-community/ui-material-bottomnavigationbar": "^7.2.44", "@nativescript-community/ui-pulltorefresh": "^2.5.3", "@nativescript-use/nativescript-orientation": "^0.0.3", "@nativescript/angular": "^15.0.1", "@nativescript/appversion": "^2.0.0", "@nativescript/background-http": "^6.0.1", "@nativescript/biometrics": "^1.3.1", "@nativescript/camera": "~5.0.15", "@nativescript/core": "~8.6.2", "@nativescript/datetimepicker": "^2.1.13", "@nativescript/firebase": "11.1.3", "@nativescript/firebase-core": "^3.2.0", "@nativescript/firebase-messaging": "^3.2.0", "@nativescript/imagepicker": "^3.0.0", "@nativescript/iqkeyboardmanager": "^2.1.1", "@nativescript/local-notifications": "^6.1.1", "@nativescript/secure-storage": "^3.0.3", "@nativescript/theme": "^2.5.0", "@ngx-translate/core": "^14.0.0", "@ngx-translate/http-loader": "^7.0.0", "@nota/nativescript-webview-ext": "^8.0.2", "@nstudio/nativescript-cardview": "^2.0.2", "@nstudio/nativescript-carousel": "^8.0.3", "@nstudio/nativescript-checkbox": "^2.0.5", "@nstudio/nativescript-floatingactionbutton": "^3.0.4", "@nstudio/nativescript-pulltorefresh": "^3.0.2", "@nstudio/nativescript-snackbar": "^2.1.0", "@triniwiz/nativescript-image-cache-it": "7.4.0", "autolinker": "^4.0.0", "bootstrap": "^4.5.2", "email-validator": "^2.0.4", "enhanced-resolve": "^4.1.1", "jwt-decode": "^2.2.0", "moment": "^2.30.1", "nativescript": "^8.6.5", "nativescript-audio": "~6.2.6", "nativescript-drop-down": "~6.0.2", "nativescript-imagecropper": "~4.0.3", "nativescript-livesync": "^1.4.1", "nativescript-mediafilepicker": "~4.0.2", "nativescript-modal-datetimepicker": "~2.1.5", "nativescript-oauth2": "~3.0.10", "nativescript-permissions": "~1.3.12", "nativescript-phone": "^3.0.3", "nativescript-screen-orientation": "~2.0.0", "nativescript-sqlite": "~2.8.6", "nativescript-themes": "^2.0.2", "nativescript-ui-listview": "~15.2.3", "nativescript-webview-utils": "~4.0.0", "ngx-linky": "~4.0.0", "qs": "npm:querystring@^0.2.1", "rxjs": "~7.5.0", "util": "^0.12.5", "zone.js": "^0.11.6" }, "devDependencies": { "@angular-devkit/build-angular": "~15.1.0", "@angular/compiler-cli": "~15.1.0", "@nativescript/android": "8.6.2", "@nativescript/ios": "8.6.3", "@nativescript/types": "~8.4.0", "@nativescript/webpack": "~5.0.18", "@ngtools/webpack": "~15.1.0", "sass": "^1.34.1", "typescript": "~4.9.4" }, "scripts": { "ns-bundle": "ns-bundle" }, "main": "app/main.ts", "hooks": [] } `
Seems there is bug on android 14
"description": "NativeScript Application", "version": "1.1.21", "license": "MIT", "name": "TestApp", "readme": "NativeScript Application", "repository": "",
"dependencies": {
"@angular/animations": "~15.1.0",
"@angular/common": "~15.1.0",
"@angular/compiler": "~15.1.0",
"@angular/core": "~15.1.0",
"@angular/forms": "~15.1.0",
"@angular/platform-browser": "~15.1.0",
"@angular/platform-browser-dynamic": "~15.1.0",
"@angular/router": "~15.1.0",
"@finalsite/rich-text-editor": "^0.1.1",
"@nativescript-community/ui-barcodeview": "^3.6.1",
"@nativescript-community/ui-document-picker": "^1.1.12",
"@nativescript-community/ui-material-bottomnavigationbar": "^7.2.44",
"@nativescript-community/ui-pulltorefresh": "^2.5.3",
"@nativescript-use/nativescript-orientation": "^0.0.3",
"@nativescript/angular": "^15.0.1",
"@nativescript/appversion": "^2.0.0",
"@nativescript/background-http": "^6.0.1",
"@nativescript/biometrics": "^1.3.1",
"@nativescript/camera": "~5.0.15",
"@nativescript/core": "~8.6.2",
"@nativescript/datetimepicker": "^2.1.13",
"@nativescript/firebase": "11.1.3",
"@nativescript/firebase-core": "^3.2.0",
"@nativescript/firebase-messaging": "^3.2.0",
"@nativescript/imagepicker": "^3.0.0",
"@nativescript/iqkeyboardmanager": "^2.1.1",
"@nativescript/local-notifications": "^6.1.1",
"@nativescript/secure-storage": "^3.0.3",
"@nativescript/theme": "^2.5.0",
"@ngx-translate/core": "^14.0.0",
"@ngx-translate/http-loader": "^7.0.0",
"@nota/nativescript-webview-ext": "^8.0.2",
"@nstudio/nativescript-cardview": "^2.0.2",
"@nstudio/nativescript-carousel": "^8.0.3",
"@nstudio/nativescript-checkbox": "^2.0.5",
"@nstudio/nativescript-floatingactionbutton": "^3.0.4",
"@nstudio/nativescript-pulltorefresh": "^3.0.2",
"@nstudio/nativescript-snackbar": "^2.1.0",
"@triniwiz/nativescript-image-cache-it": "7.4.0",
"autolinker": "^4.0.0",
"bootstrap": "^4.5.2",
"email-validator": "^2.0.4",
"enhanced-resolve": "^4.1.1",
"jwt-decode": "^2.2.0",
"moment": "^2.30.1",
"nativescript": "^8.6.5",
"nativescript-audio": "~6.2.6",
"nativescript-drop-down": "~6.0.2",
"nativescript-imagecropper": "~4.0.3",
"nativescript-livesync": "^1.4.1",
"nativescript-mediafilepicker": "~4.0.2",
"nativescript-modal-datetimepicker": "~2.1.5",
"nativescript-oauth2": "~3.0.10",
"nativescript-permissions": "~1.3.12",
"nativescript-phone": "^3.0.3",
"nativescript-screen-orientation": "~2.0.0",
"nativescript-sqlite": "~2.8.6",
"nativescript-themes": "^2.0.2",
"nativescript-ui-listview": "~15.2.3",
"nativescript-webview-utils": "~4.0.0",
"ngx-linky": "~4.0.0",
"qs": "npm:querystring@^0.2.1",
"rxjs": "~7.5.0",
"util": "^0.12.5",
"zone.js": "^0.11.6"
},
"devDependencies": {
"@angular-devkit/build-angular": "~15.1.0",
"@angular/compiler-cli": "~15.1.0",
"@nativescript/android": "8.6.2",
"@nativescript/ios": "8.6.3",
"@nativescript/types": "~8.4.0",
"@nativescript/webpack": "~5.0.18",
"@ngtools/webpack": "~15.1.0",
"sass": "^1.34.1",
"typescript": "~4.9.4"
},
"scripts": {
"ns-bundle": "ns-bundle"
},
"main": "app/main.ts",
"hooks": []
}
`