2011-11-30 19 views
10

मेरे कैमरा ऐप में, आप फ्रंट और बैक कैमरे के बीच स्विच कर सकते हैं। जब मैं बैक कैमरे के साथ तस्वीर लेता हूं तो तस्वीर पूर्वावलोकन शो की तरह ही होती है। लेकिन जब मैं फ्रंट कैमरे पर स्विच करता हूं, तो तस्वीर दर्पण है। मुझे लगता है कि ऐसा करने के लिए कुछ है और पीछे कैमरा लैंडस्केप मोड में है। मैंने एसओ पर लगभग हर दिए गए उत्तरों की कोशिश की है।एंड्रॉइड, फ्रंट एंड बैक कैमरा ओरिएंटेशन, लैंडस्केप

अगर कोई मुझे सही दिशाओं में इंगित कर सकता है तो यह वास्तव में मदद करेगा।

उत्तर

19

मैं इस सवाल का जवाब मिल गया है, कर mCamera.setDisplayOrientationa(int degrees); मदद नहीं की: वहाँ एक समारोह वे देव साइट पर मदद कर सकता है कि है। परिणाम प्राप्त करने के लिए मुझे जेनरेट किए गए बिटमैप को दर्पण करना पड़ा। मैंने इसे प्राप्त करने के लिए मैट्रिक्स विधि का उपयोग किया।

float[] mirrorY = { -1, 0, 0, 0, 1, 0, 0, 0, 1}; 
Matrix matrix = new Matrix(); 
Matrix matrixMirrorY = new Matrix(); 
matrixMirrorY.setValues(mirrorY); 

matrix.postConcat(matrixMirrorY); 

image = Bitmap.createBitmap(mBitmap, 0, 0, frame.getWidth(), frame.getHeight(), matrix, true) 
+2

कूल बिटमैप बारी बारी से करने rotateBitmap फोन, उत्तर पोस्ट के लिए धन्यवाद। – craniumonempty

+2

कोई समस्या नहीं;), खुशी है कि मैं –

+0

@MikelBollemeijer वास्तव में मददगार मदद कर सकता हूं। धन्यवाद –

5

फ्रंट कैमरा वाला मुद्दा एंड्रॉइड 4.0+ के लिए विशिष्ट माना गया था। तो तुम्हारे जाने के बाद विधि में बाइट सरणी डीकोड "onPictureTaken"

@Override 
    public void onPictureTaken(byte[] data, Camera camera) { 

    Bitmap photo = BitmapFactory.decodeByteArray(data,0,data.length); 
    photo = rotateBitmap(photo); //.....do some stuff  } 

सिर्फ

private Bitmap rotateBitmap(Bitmap bitmap){ 

    Matrix rotateRight = new Matrix(); 
    rotateRight.preRotate(90); 

    if(android.os.Build.VERSION.SDK_INT > 13 && CameraActivity.frontCamera) 
    { 
     float[] mirrorY = { -1, 0, 0, 0, 1, 0, 0, 0, 1}; 
     rotateRight = new Matrix(); 
     Matrix matrixMirrorY = new Matrix(); 
     matrixMirrorY.setValues(mirrorY); 

     rotateRight.postConcat(matrixMirrorY); 

     rotateRight.preRotate(270); 
    } 

    final Bitmap rImg= Bitmap.createBitmap(bitmap, 0, 0, 
      bitmap.getWidth(), bitmap.getHeight(), rotateRight, true); 
    return rImg; 
} 
+0

आपका उत्तर पहले से ही स्वीकृत उत्तर से अलग कैसे है? –

+1

यह शुरुआती लोगों के लिए बहुत अधिक पठनीय और समझदार है। यही कारण है कि मैंने यह पूरा जवाब जोड़ा। उपर्युक्त उत्तर में यह स्पष्ट रूप से नहीं कहा गया है कि यह कहां करें। उपरोक्त उत्तर में इसके अलावा "preRotate()" विधि अनुपलब्ध है। –

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