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

오디오 녹음 질문합니다(3gp파일, 지원하지않는 재생 방식)

0 추천
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.CountDownTimer;
import android.os.Environment;
import android.os.SystemClock;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import com.google.android.gms.common.api.GoogleApiClient;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        voice_recording();

    }

    void voice_recording(){
        CountDownTimer ct = new CountDownTimer(60000,10000) { //1분마다 10초씩
            @Override
            public void onTick(long millisUntilFinished) {
                Date date = new Date();
                SimpleDateFormat sdfNow = new SimpleDateFormat("HH:mm:ss");
                String strNow = sdfNow.format(date);

                String file_name = "["+strNow+"] "+" voice.3gp";
                String path = Environment.getExternalStorageDirectory() + "/txtbox/" +file_name;
                if(voice_recorder==null){
                    voice_recorder = new MediaRecorder();
                }else{
                    voice_recorder.reset();
                }
                voice_recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                voice_recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                voice_recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                voice_recorder.setOutputFile(path);
                try {
                    voice_recorder.prepare();
                    voice_recorder.start();
                    Toast.makeText(MainActivity.this, "start recording", Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    Toast.makeText(MainActivity.this, "IOException", Toast.LENGTH_SHORT).show();
                }
            }
            @Override
            public void onFinish() {
                voice_recorder.stop();
                voice_recorder.release();
                voice_recorder = null;
                Toast.makeText(MainActivity.this, "stop recording", Toast.LENGTH_SHORT).show();
            }
        }.start();
    }
}

mediarecord이용해서 3gp파일로 저장했는데 파일은 저장되고 용량도 있는데 지원하지 않는 재생방식이라고 뜨네요... 저장이 제대로 안되는걸까요 ㅠ 파일은 제대로 저장되는데...

그리고 countdowntimer 이용해서 60초간 10초씩 끊어서 저장하는데 이게 문제인 걸까요...?

sksk (320 포인트) 님이 2016년 7월 26일 질문

1개의 답변

+1 추천
 
채택된 답변
코드는 문제 없어 보입니다.

우선 저장된 파일을 MXPlayer 같은 것이나.

PC로 가져와서 vlc 같은 것으로 돌려보세요..

동작되면 플레이어에서 해당 컨텐츠를 지원 못하는 듯 합니다.  

 

이 경우 단말의 플레이어에서 지원하는 조합으로  OutputFormat과 AudioEncoder 값을 변경 해 주셔야 할 듯 합니다.
사악미소 (65,330 포인트) 님이 2016년 7월 26일 답변
sksk님이 2016년 7월 26일 채택됨
답변감사합니다.  다른방식으로 해봐도 재생이 안되는걸 봐선 코드에는 문제가없는게 맞는 것 같네요ㅎ 말씀해주신 방법대로 해보겠습니다~
죄송한데 질문하나 더 해도 될까요..? 전에는 직접 생성해서 저장한 파일이 pc에서도 잘 보였는데 (텍스트파일, mp4파일 등), 어제부터 테스트하는 파일은 pc에서 안보여서 옮길 수가 없네요... 폰에서는 잘만 보이는데.. 이건 무슨문제인 걸까요. 원래는 다 mainactivity에서 실행했었는데, 백그라운드에서 실행한다고 텍스트파일이 안보이는 경우가 있나요??? 3gp파일은 mainactivity에서 생성했는데도 안보이네요 ㅠ
껐다 켜서도 안나오나요?
그렇다면,  탐색기에서 확장자 제한을  두신건 아닌지 확인 해 보시는게 좋을 듯하며, 간편하게  ES 탐색기로 PC와 직접 연동 시켜 놓은 상태에서 사용하시는 것도  괜찮을 듯 합니다.
http://myweb20.tistory.com/entry/ES%ED%8C%8C%EC%9D%BC%ED%83%90%EC%83%89%EA%B8%B0-%EB%9E%9C%EA%B3%B5%EC%9C%A0-%EA%B8%B0%EB%8A%A5%EC%9C%BC%EB%A1%9C-%EB%AC%B4%EC%84%A0%EC%9C%BC%EB%A1%9C-%EC%8A%A4%EB%A7%88%ED%8A%B8%ED%8F%B0%EA%B3%BC-PC-%ED%8C%8C%EC%9D%BC-%EC%A3%BC%EA%B3%A0-%EB%B0%9B%EA%B8%B0
세상에... 껏다켰더니 보이네요 ㅋㅋㅋㅋㅋㅋㅋㅋ 참...어이가 없네요.... 감사합니다 ㅠㅠㅠ
...