Mengatasi Error java.io.FileNotFoundException di Native Audio – Ionic Angular

Saat menggunakan plugin Cordova Native Audio pada project ionic saya, terdapat error java.io.FileNotFoundException www/assets/musik/1.mp3

Padahal saya sudah menaruhkan file aset yang saya miliki di direktori assets/musik/1.mp3

Berikut adalah contoh sederhana source code saya :

home.page.html

<ion-header [translucent]="true">
  <ion-toolbar>
    <ion-title>
      Blank
    </ion-title>
  </ion-toolbar>
</ion-header>

<ion-content [fullscreen]="true">
  <ion-header collapse="condense">
    <ion-toolbar>
      <ion-title size="large">Blank</ion-title>
    </ion-toolbar>
  </ion-header>

  <div id="container">
    <ion-button (click)="playAudio()">Play audio</ion-button>
  </div>
</ion-content>

home.page.ts

import { Component, OnInit } from '@angular/core';
import { NavController } from '@ionic/angular';
import { NativeAudio } from '@awesome-cordova-plugins/native-audio/ngx';

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage {

  constructor(
  	public navCtrl: NavController,
  	public nativeAudio: NativeAudio
  ) {

  }

  ngOnInit(){
  	this.nativeAudio.preloadSimple('1mp3', 'assets/musik/1.mp3').then((res)=>{
  		console.log(res);
  	}, (err) => {
  		console.log(err)
  	});
  }

  async playAudio(){
    this.nativeAudio.play('1mp3', () => console.log('1mp3 is done playing'));
  }
}

Setelah berselancar kesana kemari, akhirnya saya mendapatkan solusi yang tepat.

Solusi :

Plugin Cordova Native Audio membaca folder aset “www“. Sedangkan, pada project Ionic Capacitor membaca “public“.

Kita perlu merubah kode pada Plugin untuk membaca ke folder “public

IOS

silahkan buka direktori “ios/capacitor-cordova-ios-plugins/sources/CordovaPluginNativeaudio/NativeAudio.m

pad baris 87, ubah NSString* basePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"www"]; menjadi NSString* basePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"public"];

Android

Untuk android buka direktori “android/capacitor-cordova-android-plugins/src/main/java/com/rjfun/cordova/plugin/nativeaudio/NativeAudio.java

Pada baris 85, ubah String fullPath = "www/".concat(assetPath); menjadi String fullPath = "public/".concat(assetPath);

Setelah diubah, kita hanya perlu membuil kembali project kita ke IOS atau Android.

About the Author: amoe

You May Also Like

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *