0

是否可以通过 AIDE-IDE 应用程序直接在我的手机上开发使用 Android Audiorecord 的 Java 应用程序?感谢您的关注。

4

1 回答 1

0

请尝试以下代码:

//https://gist.github.com/nileshdarade/abd9a395821849b587583fafa00280a4
public static AudioRecord findAudioRecord(Context context) {
    AudioRecord recorder = null;
    try {
        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        int _rate = Integer.parseInt(audioManager.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE));
        int bufferSize = Integer.parseInt(audioManager.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER));
        for (short audioFormat : new short[]{AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT}) {
            for (short channelConfig : new short[]{AudioFormat.CHANNEL_IN_MONO, AudioFormat.CHANNEL_IN_STEREO}) {

                Log.d(TAG, "Attempting rate " + _rate + "Hz, bits: " + audioFormat + ", channel: "
                        + channelConfig);
                int bufferSize = AudioRecord.getMinBufferSize(_rate, channelConfig, audioFormat);
                if (bufferSize != AudioRecord.ERROR_BAD_VALUE) {
                    // check if we can instantiate and have a success
                    recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, _rate, channelConfig, audioFormat, bufferSize);

                    if (recorder.getState() == AudioRecord.STATE_INITIALIZED) {
                        return recorder;
                    }
                }

            }
        }
    } catch (Exception e) {
        Log.e(TAG, "Exception, keep trying.", e);
    }


    for (int rate : new int[]{8000, 11025, 16000, 22050, 44100}) {
        for (short audioFormat : new short[]{AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT}) {
            for (short channelConfig : new short[]{AudioFormat.CHANNEL_IN_MONO, AudioFormat.CHANNEL_IN_STEREO}) {
                try {
                    Log.d(TAG, "Attempting rate " + rate + "Hz, bits: " + audioFormat + ", channel: "
                            + channelConfig);
                    bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat);

                    if (bufferSize != AudioRecord.ERROR_BAD_VALUE) {
                        // check if we can instantiate and have a success
                        recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, rate, channelConfig, audioFormat, bufferSize);

                        if (recorder.getState() == AudioRecord.STATE_INITIALIZED) {
                            return recorder;
                        }
                    }
                } catch (Exception e) {
                    Log.e(TAG, rate + "Exception, keep trying.", e);
                }
            }
        }
    }
    return null;
}
于 2018-07-01T08:51:53.743 回答