0.1.0 • Published 8 years ago

cordova-plugin-audio-reader v0.1.0

Weekly downloads
3
License
MIT
Repository
github
Last release
8 years ago

cordova-plugin-audio-reader

This plugin provides the ability to read raw audio data from smartphone, benefiting for the APP development using ionic framework.

NOTE: The current implementation only support Android. A future implementation will support iOS. Our plugin is different from

  • cordova-plugin-media: This plugin stores the data in a file instead of reporting to upper layer, while our plugin provides more low-level and direct access to low-level raw audio data.
  • cordova-plugin-audio-recorder-api: We borrow the basic idea from this plugin.However, this plugin still stores the audio data in a file.

Supported Platforms

Installation

cordova plugin add cordova-plugin-audio-reader

Quick Example

This plugin defines a gloabl variable window.plugins.audioReader. Despite in the global scope, it is not available until after the deviceready event.

document.addEventListener('deviceready', function(){
    window.plugins.audioReader.init();
}, false)

A quick example is given as follows:

 var config = {
   source: AudioSource.DEFAULT,
   channel: AudioChannel.CHANNEL_IN_MONO,
   format: AudioFormat.ENCODING_PCM_16BIT,
   sampleRate:44100 // sample frequency
 }
    
 document.addEventListener('deviceready', function(){
    window.plugins.audioReader.init();
 }, false)

 $scope.start = function(){
   windows.plugins.audioReader.start();
 }
   
 $scope.stop = function(){  		
   windows.plugins.audioReader.stop();
 }
   
 $scope.record = function(){
   var succes = function(result){
   	 	var leftChannel = result.leftChannel;
        var rightChannel = result.rightChannel;
        //handle the data read from left or right channel.
        ....
   }
   setInterval(function(){    
        windows.plugins.audioReader.read(44100,0,success,null);
   },1000)
 }   

Constants and Configuration

The following constants are used for configuration

Audio Source

  • AudioSouce.DEFAULT = 0
  • AudioSource.MIC = 1

Audio Channel

  • AudioChannel.CHANNEL_IN_MONO = 16
  • AudioChannel.CHANNEL_STEREO = 12

Audio Format

  • AudioFormat.ENCODING_PCM_16BIT = 2
  • AudioFormat.ENCODING_PCM_8BIT = 3
  • AudioFormat.ENCODING_PCM_FLOAT = 4

Default configuration:

var defaultConfig = {
	source: AudioSource.DEFAULT,
    channel: AudioChannel.CHANNEL_IN_MONO,
    format: AudioChannel.ENCODING_PCM_16BIT,
    sampleRate:44100
    
}

You could define your own configuration as a parameter of init function.

document.addEventListener('deviceready', function(){
        window.plugins.audioReader.init(yourConfig);
    }, false)

Methods

  • audioReader.init: Initailizes the audioReader with customized configuration.
  • audioReader.start: Starts the recording.
  • audioReader.stop: Stops the recording.
  • audioReader.read: Reads the raw data from audio channels.
  • audioReader.clear: Clears the raw data from buffers.

audioReader.init

Initializes the audioReader

 audioReader.init(config, successCallback, errorCallback)

audioReader.start

Starts the recording. Note that all the raw data are stored in buffer.

 audioReader.start(successCallback, errorCallback)

audioReader.stop

Stops the recording.

 audioReader.stop(successCallback, errorCallback)

audioReader.clear

Clears the data stored in the buffers.

 audioReader.clear()

audioReader.read

Reads raw audio data from buffers. in buffer.

audioReader.read(length, channel, successCallback, errorCallback)

Parameters:

  • length: how many data do you want to read.
  • channel: which channel do you want to read from. 0 - both, 1- left channel, 2- right channel.
  • successCallback: the passed parameter contains two variables: leftChannel and rightChannel

For example:

  audioReader.read(44100, 0, function(result){
     //return an array including audio data read from left channel.
  	 var leftArray = result.leftChannel;
     //reutrn an array including audio data read from right channel.
     var rightArray = result.rightChannel;
  })