मैं एक कैमरा एप्लिकेशन बना रहा हूं। पूर्वावलोकन चित्र 90 डिग्री घुमाया गया था। इसलिए मैंने अपना कोड बदल दिया और कैमरे के सही डिस्प्ले ओरिएंटेशन को सेट करने के लिए कोड जोड़ा। अब जब मैं ऐप चलाता हूं, तो यह क्रैश हो जाता है और त्रुटि संदेश है

java.lang.RuntimeException: सेटपैरामीटर विफल;

माई सरफेस चेंजेड (सरफेसहोल्डर होल्डर, इंट फॉर्मेट, इंट डब्ल्यू, इंट एच) और सरफेसक्रिएटेड (सरफेसहोल्डर होल्डर) मेथड्स दिखाए गए हैं।

public void surfaceChanged(SurfaceHolder holder,int format,int w,int h){
    Camera.Parameters mparameters;
    mholder = holder;
    mparameters = mcamera.getParameters();
    mparameters.setPreviewSize(mpreviewsizewidth,mpreviewsizeheight);
    mparameters.setPictureSize(mpreviewsizewidth,mpreviewsizeheight);
    String mCameraFlashMode = mparameters.getFlashMode();
    if(mCameraFlashMode != null){
        mparameters.setFlashMode(mparameters.FLASH_MODE_ON);
    }
    if(mparameters.getFocusMode() != null) {
        mparameters.setFocusMode(mparameters.FOCUS_MODE_AUTO);
    }
    Display display = ((WindowManager)mcontext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

    if(display.getRotation() == Surface.ROTATION_0)
    {
        mparameters.setPreviewSize(mpreviewsizeheight, mpreviewsizewidth);
        mcamera.setDisplayOrientation(90);
    }

    if(display.getRotation() == Surface.ROTATION_90)
    {
        mparameters.setPreviewSize(mpreviewsizewidth, mpreviewsizeheight);
    }

    if(display.getRotation() == Surface.ROTATION_180)
    {
        mparameters.setPreviewSize(mpreviewsizeheight, mpreviewsizewidth);
    }

    if(display.getRotation() == Surface.ROTATION_270)
    {
        mparameters.setPreviewSize(mpreviewsizewidth, mpreviewsizeheight);
        mcamera.setDisplayOrientation(180);
    }

    mcamera.setParameters(mparameters);
    try {
        mcamera.setPreviewDisplay(mholder);
    }catch(IOException e){
        e.printStackTrace();
    }
    mcamera.startPreview();
}

public void surfaceCreated(SurfaceHolder holder){
    mcamera = Camera.open();
    try{
        mcamera.setPreviewDisplay(holder);
        mcamera.setPreviewCallback(this);
    }catch(IOException e){
        mcamera.release();
        mcamera = null;
    }
}

कृपया मेरी मदद करें कि मैं अपना कोड कैसे सही कर सकता हूं ताकि कैमरा पैरामीटर सेट करते समय ऐप क्रैश न हो, और पूर्वावलोकन सही अभिविन्यास के साथ प्रदर्शित किया जा सके।

0
rajatchourasia7 10 मई 2017, 05:52

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि आप एक पूर्वावलोकन आकार सेट करने का प्रयास कर रहे हैं जो कैमरा ऑब्जेक्ट द्वारा समर्थित नहीं है। आपको यह जांचने के लिए पहले समर्थित पूर्वावलोकन आकार की सूची मिलनी चाहिए कि आप वास्तव में कौन से मान सेट कर सकते हैं।

List<Camera.Size> sizes = cam.getParameters().getSupportedPreviewSizes();
1
Mahesh 10 मई 2017, 06:42