2011-12-27 14 views
14

मुझे अपने एंड्रॉइड एप्लिकेशन का परीक्षण करते समय कैमरा त्रुटि 100 का सामना करना पड़ रहा है, मुझे StackOverflow पर कुछ विषय मिले हैं लेकिन वे बहुत उपयोगी नहीं थे। मैं त्रुटि को ठीक करने के लिए एक प्रासंगिक समाधान की तलाश में हूं।एंड्रॉइड कैमरा सर्वर मर गया और कैमरा त्रुटि - 100

कोड है कि मैं लिखा है:

mrec = new MediaRecorder(); // Works well 

mCamera = Camera.open(); 
mCamera.unlock(); 

mrec.setCamera(mCamera); 
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
mrec.setAudioSource(MediaRecorder.AudioSource.MIC); 

mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 

mrec.setOutputFile("/sdcard/zzzz.3gp"); 

mrec.prepare(); 
mrec.start(); 

कोड कैमरा रिकॉर्ड करने के लिए:

protected void startRecordingVideo() throws IOException 
{ 
camera = Camera.open(); 
camera.unlock(); 
SimpleDateFormat timeStampFormat = new SimpleDateFormat(
     "yyyy-MM-dd-HH.mm.ss"); 
String fileName = "video_" + timeStampFormat.format(new Date()) 
     + ".3gp"; 
String fileURL = "/sdcard/"+fileName; 
surfaceView = (SurfaceView) findViewById(R.id.surface_camera); 
surfaceHolder = surfaceView.getHolder(); 
surfaceHolder.addCallback(this); 
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
mrec = new MediaRecorder(); 

mrec.setCamera(camera); 

mrec.setPreviewDisplay(surfaceHolder.getSurface()); 
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
    mrec.setAudioSource(MediaRecorder.AudioSource.MIC); 
    mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW)); 
    mrec.setPreviewDisplay(surfaceHolder.getSurface()); 
    mrec.setOutputFile("/sdcard/"+fileName); 

    mrec.prepare(); 
    mrec.start(); 
} 

protected void stopRecordingVideo() { 
mrec.stop(); 
mrec.release(); 
camera.release(); 
} 

private void releaseMediaRecorder(){ 
if (mrec != null) { 
    mrec.reset(); // clear recorder configuration 
    mrec.release(); // release the recorder object 
    mrec = null; 
    camera.lock();   
    } 
} 

private void releaseCamera(){ 
if (camera != null){ 
    camera.release();   
    camera = null; 
} 
} 

@Override 
public void surfaceChanged(SurfaceHolder holder, int format, int width, 
    int height) { 
// TODO Auto-generated method stub 
} 


@Override 
public void surfaceCreated(SurfaceHolder holder) { 
// TODO Auto-generated method stub 

if (camera != null){ 
    Parameters params = camera.getParameters(); 
    camera.setParameters(params); 
} 
else { 
    Toast.makeText(getApplicationContext(), "Camera not available!", Toast.LENGTH_LONG).show(); 
    finish(); 
} 
} 


@Override 
public void surfaceDestroyed(SurfaceHolder holder) { 
releaseMediaRecorder(); 
camera.stopPreview(); 
camera.release(); 


} 

यहाँ Logcat उत्पादन कर रहे हैं:

12-27 17:52:02.788: W/IMediaDeathNotifier(21434): media server died! 
12-27 17:52:02.788: W/Camera(21434): Camera server died! 
12-27 17:52:02.788: W/Camera(21434): ICamera died 
12-27 17:52:03.048: E/Camera(21434): Error 100 
+1

क्या आप लॉगकैट संदेश पोस्ट कर सकते हैं? – slayton

+0

आपके उत्तर @ स्लेटन के लिए धन्यवाद। मैंने लॉगबैक त्रुटियों के साथ अपना प्रश्न संपादित किया। –

+0

आप इसे कैसे ठीक करते हैं? मुझे उसी – kinghomer

उत्तर

5

आप पूर्वावलोकन प्रदर्शन निर्धारित करने की आवश्यकता रिकॉर्डर के लिए।

mrec.setPreviewDisplay(SurfaceHolder.getSurface());

वीडियो रिकॉर्डर के लिए इनपुट के रूप में पूर्वावलोकन प्रदर्शन कृत्यों में वीडियो डेटा। आपको यह भी सुनिश्चित करना होगा कि रिकॉर्डिंग और पूर्वावलोकन रिज़ॉल्यूशन के लिए वीडियो रिज़ॉल्यूशन समान है।

+0

हाय @ रवि, उत्तर के लिए बहुत बहुत धन्यवाद। क्या आप कृपया मुझे इस पूर्वावलोकन को अधिक जानकारी दे सकते हैं? मुझे निजी पूर्वावलोकन SurfaceHolder करना है? और फिर कोड की आपकी लाइन? –

+0

[यहाँ] (http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html) मैं इस समस्या का समाधान पूर्वावलोकन – bluefalcon

+0

पर एक नमूना अनुप्रयोग, है धन्यवाद। –

3

यह अपवाद तब होगा जब कैमरा पैरामीटर उपयोग से पहले सेट नहीं किए गए थे।

यहां सबसे सामान्य डिफ़ॉल्ट मान सेट करने का एक तरीका है। ध्यान दें कि यह विधि इस धारणा पर डिफ़ॉल्ट का उपयोग करती है कि अभी भी फोटोग्राफी के लिए कैमरे का उपयोग किया जा रहा है। वीडियो कैप्चर के लिए समर्थित चित्र स्वरूप हटाएं।

/** 
* This method configures the camera with a set of defaults for brightness, 
* flash, camera mode, and picture sizes. 
*/ 
private void setCameraDefaults() 
{ 
    Camera.Parameters params = mCamera.getParameters(); 

    // Supported picture formats (all devices should support JPEG). 
    List<Integer> formats = params.getSupportedPictureFormats(); 

    if (formats.contains(ImageFormat.JPEG)) 
    { 
     params.setPictureFormat(ImageFormat.JPEG); 
     params.setJpegQuality(100); 
    } 
    else 
     params.setPictureFormat(PixelFormat.RGB_565); 

    // Now the supported picture sizes. 
    List<Size> sizes = params.getSupportedPictureSizes(); 
    Camera.Size size = sizes.get(sizes.size()-1); 
    params.setPictureSize(size.width, size.height); 

    // Set the brightness to auto. 
    params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO); 

    // Set the flash mode to auto. 
    params.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO); 

    // Set the scene mode to auto. 
    params.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO); 

    // Lastly set the focus to auto. 
    params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 

    mCamera.setParameters(params); 
} 
0

कैमरा का उपयोग करें। एरर कॉलबैक जो कैमरा सर्वर विफल होने पर ट्रिगर हो जाता है। Camera.ErrorCallback Android documentation फिर आप कैमरे के गुणों का निरीक्षण कर सकते हैं।

संबंधित मुद्दे