-1

I am creating an android app to set and get audio levels. Using audio manager we get only 15 audio levels. I need to map these audio levels to percentage because user will be giving audio level in percentage and getting in percentage. Having only 15 levels of audio is not possible to map to percentage. Is there any other way to get current volume level other than through audio manager in android? I need to use ndk approach because i need give it as .jar file.

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
M.Dev
  • 63
  • 1
  • 6

1 Answers1

0

Try it using Visualizer.

Below is some code that may help you:

    private Visualizer audioOutput = null;
    int rate = Visualizer.getMaxCaptureRate();
    audioOutput = new Visualizer(0); // get output audio stream
    audioOutput.setDataCaptureListener(new Visualizer.OnDataCaptureListener() {
        @Override
        public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) {
            intensity = ((float) waveform[0] + 128f) / 256;
            Log.d("vis", String.valueOf(intensity));
        }

        @Override
        public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) {

        }
    },rate , true, false); // waveform not freq data
    Log.d("rate", String.valueOf(Visualizer.getMaxCaptureRate()));
    audioOutput.setEnabled(true);
Vikasdeep Singh
  • 20,983
  • 15
  • 78
  • 104