마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

데시벨 측정 실행화면에서 Infinity 없애는 법 질문...

0 추천

안녕하세요 

버튼을 하나 생성하여, Record버튼을 터치시 소리를 인식하여 데시벨을 측정하고 1초마다 텍스트뷰에 해당 데시벨 값을 출력하는 프로그램을 만들어 보고 있습니다.

코드는 문제없이 돌아가지만,  처음에 Record버튼을 터치 하면 Infinity라는 값이 먼저 출력이 되는데,

이게 보기 상당히 거슬려서 없애고 싶습니다.ㅠㅠ

아래는 버튼 클릭시 동작과 데시벨 값을 측정하는 코드입니다.

 

btn_record.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        btn_record.setEnabled(false); //두번 누를 수 있으니까
        btn_stop.setEnabled(true);

        isRecording = true;

        mediaRecorder = new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION); //마이크로 녹음하겠다
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //저장파일 형식 녹음파일은 3gp로 저장
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //인코딩 방식설정
        mediaRecorder.setOutputFile(path); //경로설정

        try {
            mediaRecorder.prepare(); //녹음을 준비함 : 지금까지의 옵션에서 문제가 발생했는지 검사함
            mediaRecorder.start();
            Toast.makeText(getApplicationContext(), "녹음시작", Toast.LENGTH_LONG).show();

            timer = new Timer();
            timer.schedule(new CustomTimer(), 2000, 1000);


        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});
public double getAmplitude() {
    double db = Math.abs(20 * Math.log10(mediaRecorder.getMaxAmplitude() / 16.0));
    if (mediaRecorder != null) {
        return db;
    }
    else
        return 0;
}
실습생정 (120 포인트) 님이 2020년 7월 31일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...