@bazumax/native-audio

A native plugin for native audio engine

Usage no npm install needed!

<script type="module">
  import bazumaxNativeAudio from 'https://cdn.skypack.dev/@bazumax/native-audio';
</script>

README

Capacitor Native Audio Plugin

Capacitory community plugin for native audio engine.

Maintainers

Maintainer GitHub Social Sponsoring Company
Priyank Patel priyankpat N/A Ionic

Mainteinance Status: Actively Maintained

Installation

To use npm

npm install @capacitor-community/native-audio

To use yarn

yarn add @capacitor-community/native-audio

Sync native files

npx cap sync

On iOS, no further steps are needed.

On Android, register the plugin in your main activity:

import com.getcapacitor.community.firebasecrashlytics.FirebaseCrashlytics;

public class MainActivity extends BridgeActivity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Initializes the Bridge
    this.init(
        savedInstanceState,
        new ArrayList<Class<? extends Plugin>>() {

          {
            // Additional plugins you've installed go here
            // Ex: add(TotallyAwesomePlugin.class);
            add(FirebaseCrashlytics.class);
          }
        }
      );
  }
}

Configuration

No configuration required for this plugin.

Supported methods

Name Android iOS Web
configure
preloadSimple
preloadComplex
play
loop
stop
unload
setVolume
getDuration
getCurrentTime

Usage


import { Plugins } from '@capacitor/core';

const { NativeAudio } = Plugins;

/**
 * This method will throw an exception triggering crashlytics to log the event.
 * @param none
 * @returns void
 */
NativeAudio.configure({
  fade: '',
});

/**
 * This method will load short duration audio file into memory.
 * @param assetPath - relative path of the file or absolute url (http://)
 *        assetId - unique identifier of the file
 * @returns void
 */
NativeAudio.preloadSimple({
  assetPath: 'audio/chime.mp3',
  assetId: 'chime_audio',
});

/**
 * This method will load more optimized audio files for background into memory.
 * @param assetPath - relative path of the file or absolute url (file://)
 *        assetId - unique identifier of the file
 *        volume - numerical value of the volume between 0.1 - 1.0
 *        audioChannelNum - number of audio channels
 *        isUrl - pass true if assetPath is a `file://` url
 * @returns void
 */
NativeAudio.preloadComplex({
  assetPath: 'audio/inception.mp3',
  assetId: 'inception_audio',
  volume: 1.0,
  audioChannelNum: 1,
  isUrl: false
});

/**
 * This method will play the loaded audio file if present in the memory.
 * @param assetId - identifier of the asset
 * @returns void
 */
NativeAudio.play({
  assetId: 'chime_audio',
});

/**
 * This method will loop the audio file for playback.
 * @param assetId - identifier of the asset
 * @returns void
 */
NativeAudio.loop({
  assetId: 'chime_audio',
});


/**
 * This method will stop the audio file if it's currently playing.
 * @param assetId - identifier of the asset
 * @returns void
 */
NativeAudio.stop({
  assetId: 'chime_audio',
});

/**
 * This method will unload the audio file from the memory.
 * @param assetId - identifier of the asset
 * @returns void
 */
NativeAudio.unload({
  assetId: 'chime_audio',
});

/**
 * This method will set the new volume for a audio file.
 * @param assetId - identifier of the asset
 *        volume - numerical value of the volume between 0.1 - 1.0
 * @returns void
 */
NativeAudio.setVolume({
  assetId: 'inception_audio',
  volume: 0.4,
});

/**
 * this method will get the duration of an audio file.
 * only works if channels == 1
 */
NativeAudio.getDuration({
  assetId: 'inception_audio'
})
.then(result => {
  console.log(result.duration);
})

/**
 * this method will get the current time of a playing audio file.
 * only works if channels == 1
 */
NativeAudio.getCurrentTime({
  assetId: 'inception_audio'
});
.then(result => {
  console.log(result.currentTime);
})