package com.step.upon;

/**
 * Created by xiangye on 2017/12/28.
 */

import android.media.MediaRecorder;
import android.media.AudioFormat;
import android.util.Log;
import java.io.File;

import org.apache.cordova.PermissionHelper;
import android.Manifest;

import android.os.Environment;

import java.io.Console;
import java.io.IOException;
import java.io.OutputStream;

import omrecorder.AudioChunk;
import omrecorder.OmRecorder;
import omrecorder.PullTransport;
import omrecorder.PullableSource;
import omrecorder.Recorder;


import omrecorder.AudioRecordConfig;

public class RecorderUtility {
    private Recorder om_recorder;

    public static String [] permissions = { Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE};
    public static int RECORD_AUDIO = 0;
    public static int WRITE_EXTERNAL_STORAGE = 1;




    private PullableSource mic() {
        return new PullableSource.Default(
                new AudioRecordConfig.Default(
                        MediaRecorder.AudioSource.MIC, AudioFormat.ENCODING_PCM_16BIT,
                        AudioFormat.CHANNEL_IN_MONO, 16000
                )
        );
    }

    private File file(String filePath) {
        return new File(filePath);
    }


    public boolean startWavRecord(String wav_path) {
        boolean ret = true;

        if (om_recorder == null) {
            try {
                om_recorder = OmRecorder.wav(
                        new PullTransport.Default(mic(), new PullTransport.OnAudioChunkPulledListener() {
                            @Override public void onAudioChunkPulled(AudioChunk audioChunk) {

                            }
                        }),file(wav_path));

                om_recorder.startRecording();

            } catch (Exception e) {
               ret = false;
            }
        }

        return true;
    }


    public boolean stopWavRecord() {
        if (om_recorder != null) {
           try {
               om_recorder.stopRecording();
               om_recorder = null;
               return true;

           } catch (Exception e) {
               om_recorder = null;
           }
        }
        return false;
    }
}
