안드로이드 카메라앱 비디오 다루기

프로그래밍/Android 2013. 8. 30. 02:53

안드로이드 카메라앱 비디오 다루기


카메라 앱을 활용하여 비디오를 촬영하기 위해서는 사진과 마찬가지로 카메라 접근 권한이 필요합니다.


Camera 접근 권한 요청

<manifest...>

<uses-feature android:name="android.hardware.camera" />

</manifest>

- <uses-feature> 태그로 manifest 파일에 권한을 지정하면 Google Play 에 해당 앱이 요청하는 권한이 표시됩니다.


카메라 앱을 사용하여 비디오 녹화하기

// 해당 Intent 를 처리할 앱이 존재하는지 체크한다. 카메라 앱이 있는지 체크

if( IntentUtils.isIntentAvailable( mContext, MediaStore.ACTION_IMAGE_CAPTURE)){

    // 사진때와는 달리 별도의 Thread 에서 실행했다. 이렇게 별도의 Thread 를 활용하는게 권장사항이다.

mThread = new Thread( new Runnable(){

@Override

public void run() {

try{

    // 비디오를 저장할 파일을 생성해서 Intent에 넘겨준다. 이것 또한 권장사항

    // 파일을 지정해서 넘겨주지 않을 경우에는 별도의 공간에 저장되며 

    // onActivityResult() 내의 intent.getData() 로 위치를 가져올 수 있다.

mVideoF = createVideoFile();

Intent openVideoIntent = new Intent( MediaStore.ACTION_VIDEO_CAPTURE);

openVideoIntent.putExtra( MediaStore.EXTRA_OUTPUT, Uri.fromFile( mVideoF));

startActivityForResult( openVideoIntent, REQUESTCODE_CAMERA_VIDEO);

}catch( IOException e){

e.printStackTrace();

}

}

});

mThread.setName(THREAD_NAME);

mThread.start();

}else{

Log.d( TAG, "camera app not available");

}


녹화된 비디오 얻기

MediaController ctlr = new MediaController( mActivity);

ctlr.setMediaPlayer(videoView);

videoView.setVideoPath( mVideoF.getAbsolutePath());

videoView.setMediaController(ctlr);

videoView.requestFocus();


대략적으로 아래와 같은 모습입니다. 버튼 아래쪽에 VideoView 가 추가된 부분을 확인해 주세요

위에서 추가한 MediaController 는 비디오를 한번 터치해주면 비디오 하단에 표시됩니다.


VideoView 추가 화면


: