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

코드 해석 안되는부분이 있는데 질문점여

0 추천

비디오 재생관련 내용 공부하는데요 주석처리하면서 하나하나 보는데

빨간 글씨부분이 이해가 잘안되는데

어떤건가요?

 

public class VideoActivity extends Activity implements SurfaceHolder.Callback {

 String SDmpath; // String 클래스에 대한 인스턴스 선언
 Button myButton; // 버튼 변수 선언
 MediaRecorder mediaRecorder; // MediaRecorder 클래스에 대한 변수 선언
 SurfaceHolder surfaceHolder; // SurfaceHolder 클래스에 대한 변수 선언
 boolean is_recording;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  // 절대경로 가져오기
  SDmpath = Environment.getExternalStorageDirectory()
    .getAbsolutePath();

  is_recording = false;

  mediaRecorder = new MediaRecorder();
  initMediaRecorder();

  setContentView(R.layout.video);
  
  // xml에 만든 객체에 접근하기 위해 findViewById() 메소드를 사용한다.
  // 비디오뷰 변수 선언
  SurfaceView myVideoView = (SurfaceView) findViewById(R.id.videoview);
  
  surfaceHolder = myVideoView.getHolder();
  surfaceHolder.addCallback(this);

  myButton = (Button) findViewById(R.id.start);
  myButton.setOnClickListener(myButtonOnClickListener);
 }

 // 녹화시작 버튼 클릭했을때 동작하는 이벤트 메소드 정의
 private Button.OnClickListener myButtonOnClickListener = new Button.OnClickListener() {

  public void onClick(View arg0) {
   if (is_recording) {
    // 촬영 중지
    mediaRecorder.stop();
    mediaRecorder.release();
    finish();
   } else {
    mediaRecorder.start();
    is_recording = true;
    // 버튼 녹화중지로 바꾼다
    myButton.setText("녹화중지");
   }
  }
 };

 // SurfaceView가 변할 때 호출
 public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
 }

 // SurfaceView가 만들어질 때 호출
 public void surfaceCreated(SurfaceHolder arg0) {
  prepareMediaRecorder();
 }
 
 // SurfaceView가 종료될 때 호출
 public void surfaceDestroyed(SurfaceHolder arg0) {
 }

 private void initMediaRecorder() {
  
  // 시간받기
  long time4 = System.currentTimeMillis();
  // 년도-월-일 시간 으로 파일명을 만들기 위해 sdf 인스턴스를 생성한다.
  SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH");
  // 받은 시간 Date형식으로 바꾼다.
  Date dd4 = new Date(time4);
  // Date 정보를 포멧 변환한다.
  String fileName4 = sdf4.format(dd4);
  
  // 기본 오디오 소스를 사용한다
  mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
  // 기본 비디오 소스를 사용한다
  mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
  // 캠코더 낮은 퀄리티를 사용한다
  CamcorderProfile camcorderProfile_HQ = CamcorderProfile
    .get(CamcorderProfile.QUALITY_LOW);
  mediaRecorder.setProfile(camcorderProfile_HQ);
  // myvid 폴더 안에 파일명.mp4 으로 파일을 생성한다.
  mediaRecorder.setOutputFile(SDmpath + "/myvid/" +fileName4 + ".mp4");
  // 최대 시간을 60초로 한정한다.
  mediaRecorder.setMaxDuration(60000);
  // 최대 파일 크기를 5MB로 한정한다.
  mediaRecorder.setMaxFileSize(5000000);
 }

 private void prepareMediaRecorder() {
  mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
  try {
   mediaRecorder.prepare();
  } catch (IllegalStateException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

익명사용자 님이 2016년 12월 1일 질문

1개의 답변

0 추천

if (is_recording) 이말이랑  if(is_recording == true) 랑 같은 말입니다

즉 처음 버튼눌렀을때는 is_recording == false이니 녹화 시작하고  is_recording  = true 로 선언하였으니

다음번 버튼을 누를때를 is_recording  = true 이므로 녹화를 중지하게됩니다

 

  surfaceHolder = myVideoView.getHolder();
  surfaceHolder.addCallback(this); <-- 이부분은 촬영화면 구현하실때 surfaceview 로 구현하셔서 해당 뷰   호출할때 쓰이는겁니다.

 

initMediaRecorder <-- 이부분은 녹화 셋팅 설정부분인거같습니다.

 

sadeva (21,550 포인트) 님이 2016년 12월 1일 답변
감사합니다
혹시 하나더 가능하신가요?
Drawable d = bIv.getDrawable();
final Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
이 코드는 뭐라고 설명해야하나요? ?
...