【问题标题】:Get size of audio while recording android?在录制android时获取音频大小?
【发布时间】:2014-08-22 11:57:10
【问题描述】:

我正在开发一个 android 应用程序。我正在使用 MediaRecorder 类录制音频。我想在录制时检查录制音频的大小,如果大小大于我想停止录制的某个 MB,则检查录制音频的大小。我怎样才能做到这一点。任何帮助将不胜感激 。 公共类 RecordAudio {

private MediaRecorder mRecorder = null;

public RecordAudio() {
}

//
public void prepareRecording(String fileName) {

    if (mRecorder == null) {
        mRecorder = new MediaRecorder();
    }

    if (mRecorder != null) {
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mRecorder.setOutputFile(app.appExternalDir + "/" + fileName);
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        System.out.println("this is max::::"+mRecorder.getAudioSourceMax());

        try {
            mRecorder.prepare();

        } catch (IOException e) {

        }
    }
}

// This starts the recording of the voice memo
public void startRecording() {
    if (mRecorder != null) {
        mRecorder.start();
    }

}

// This stops the recording and save the data on storage
public void stopRecording() {
    if (mRecorder != null) {
        mRecorder.stop();
        mRecorder.release();
        mRecorder = null;
    }

}

}

【问题讨论】:

  • 那么,您尝试了什么,您可以发布您的愿望代码吗?
  • 我添加了关于录制的代码。

标签: android audio-recording


【解决方案1】:

使用以下代码获取录制文件的大小

 try{
                 File file = new File(path_of_your_recorded_file);
                 long length = file.length();
                 length = length/1024;
                 System.out.println("File Path : " + file.getPath() + ", File size : " + length +" KB");
            }catch(Exception e){
                System.out.println("File not found : " + e.getMessage() + e);
            }

然后,一旦您获得长度,您就可以根据您的要求进行检查,希望它能解决您的问题

【讨论】:

    【解决方案2】:

    对于那些现在遇到这个的人:

    有一个你可以实现的接口:

    public class RecordingService extends Service implements 
      MediaRecorder.OnInfoListener{
    
      @Override
      public void onInfo(MediaRecorder mr, int what, int extra) {
        Log.d(TAG_FOREGROUND_SERVICE,"inside the onInfo");
        //check whether file size has reached to Max size to stop recording
        if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED) 
        {
            Log.d(TAG_FOREGROUND_SERVICE,"Media exceeded the size");
        }
      }
    }
    

    并且在您的 MediaRecorder 初始化代码中,您可以设置接口回调和大小 例如:

        mRecorder = new MediaRecorder();
        mRecorder.setOnInfoListener(this);
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setMaxFileSize(Audio_MAX_FILE_SIZE);
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多