2012-01-25 1 views
0

비디오 녹화가 가능한 앱을 만들려고합니다. MediaStore.ACTION_IMAGE_CAPTURE를 사용하면 실제로 내 앱에서 카메라 시스템을 호출하고 사진을 찍은 후에 결과가있는 내 앱으로 돌아갑니다.MediaStore.ACTION_VIDEO_CAPTURE을 (를) 호출하는 중 오류가 발생했습니다.

코드를 사용하는 동안 MediaStore.ACTION_VIDEO_CAPTURE가 발견되었습니다. 카메라로 찍을 것이지만 비디오 모드, 이미지 캡처 모드로 가정합니다.

내가 비디오 모드에서 카메라를 호출하기 위해 사용되는 코드 :

Intent takeVideoFromCameraIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
Uri mUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "/Record/vid_"+ String.valueOf(System.currentTimeMillis()) + ".mp4")); 
takeVideoFromCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri); 
startActivityForResult(takeVideoFromCameraIntent, RESULT_OK); 

내가 실제 장치와 응용 프로그램을 실행

, 그것은 비디오 모드에서 카메라를 호출하고 또한 비디오 녹화를 할 수 없습니다. 그러나 녹음 버튼을 눌러 녹음을 마치면 카메라가 응답하지 않는다는 강제 종료 메시지로 내 앱으로 돌아갑니다.

1시에 비디오가 캡처되지 않았다고 생각했지만 파일을 검색했을 때 실제로 존재했습니다.

그런 다음 문제를 일으키는 내 onActivityResult 메소드를 생각했지만,/* ... * /을 사용하여 주석을 추가 한 후에도 여전히 동일한 문제가 있습니다. LogCat에 표시된 세부 정보는 없습니다.

+0

코드와 onActivityResult 메소드를 추가 하시겠습니까? –

+0

@Samir 안녕하세요, 동영상을 호출하는 총 코드를 추가했습니다. – Jovi

답변

3

내가 여분의 것을 추가하고 있기 때문에 오류가 있다는 것을 알고 있습니다. 내가 그냥 할 필요하면 다음

Intent takeVideoFromCameraIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
startActivityForResult(takeVideoFromCameraIntent, 1111); 

이며, 1111 (당신이 입력 한 값에 따라 다름) 요청 코드 ==와 함께하여 onActivityResult를 추가하고 확장 ".MP4"에서 구성을 마지막으로 수정 한 파일을 검색 카메라 "DCIM/카메라"의 기본 폴더는

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode == 1111)//cam 
    { 
     File folder = new File(Environment.getExternalStorageDirectory(), "/DCIM/Camera"); 
     long folderModi = folder.lastModified(); 

    FilenameFilter filter = new FilenameFilter() 
    { 
     public boolean accept(File dir, String name) 
     { 
      return (name.endsWith(mp4)); 
     } 
    }; 

    File[] folderList = folder.listFiles(filter); 

    String recentName = ""; 

    for(int i=0; i<folderList.length;i++) 
    { 
     long fileModi = folderList[i].lastModified(); 

     if(folderModi == fileModi) 
     { 
      recentName = folderList[i].getName(); 
     } 
    } 
} 

이 방법은, 내가 파일의 이름을 얻기도 함께 수정 (예 : 이름 변경)을 할 수 있습니다.

다른 사람들에게 도움이되기를 바랍니다. =)

0

하시기 바랍니다, 귀하의 logcat을 추가하십시오. 비디오 캡처의 경우 MediaRecorder 클래스를 사용하고 있습니다.이 태그를 사용하는 것이 좋습니다. 관심이 있으시면 올바른 코드를 알려 드릴 수 있습니다.

+0

거기에 logcat에는 아무 것도 없습니다. 고마워,하지만 내가 알고있는 쉽고 간단한 코드를 사용하기 위해 호핑을하고 있는데, MediaRecorder는 복잡한 것으로 보인다. – Jovi

+0

아니요, MediaRecorder를 사용하는 것은 매우 간단합니다. 시도해 보려면 MediaRecorder를 게시 할 것입니다. –

+0

... 고마워요! – Jovi

0

이 코드를 사용하여 문제가 해결 된 것 같습니다.

//create new Intent 

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 

    fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO); // create a file to save the video 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name 

    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); // set the video image quality to high 

    // start the Video Capture Intent 
    startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE); 

Use this code in an activity and also set some property in xml file. 
<uses-feature android:name="android.hardware.camera" android:required="false" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 

다른 문제가있는 경우


은 저를 회신 해 주시기 바랍니다.

+0

erm ... 음 ... 내가 제공 한 코드는 변수가 없다는 오류로 구성됩니다. 내가 어디에서 얻을 수 있는지 알 수 있습니까 (예 : MEDIA_TYPE_VIDEO) – Jovi

+0

public static final int MEDIA_TYPE_VIDEO = 2; –

+0

안녕하세요, 어디서 getOutputMediaFileUri 메서드를 얻었습니까? 내 암호가 잘못되어 무엇이 나에게 말해 줄 수 없습니까? 감사 – Jovi