के साथ एंड्रॉइड छवि अभिविन्यास समस्या मैंने इरादे छवि कैप्चर को कॉल करते समय कुछ एंड्रॉइड डिवाइसों के साथ कुछ मुद्दों को संभालने के लिए एक कस्टम कैमरा गतिविधि लिखा। उपयोगकर्ता या तो छवि को सहेजने में सक्षम है या OnPictureTakenCallback
से वापस लौटाए गए डेटा का उपयोग करने में सक्षम है।कस्टम कैमरा गतिविधि
मेरी समस्या यह है कि जिस समस्या को मैं लिया गया था उसके संबंध में छवि को सही ढंग से प्रदर्शित कर रहा है। मैं SetRequestedOrientation
पर कॉल करके चित्र में चित्र को प्रदर्शित करने के लिए मजबूर करता हूं।
उपयोगकर्ता को चित्र लेने के दौरान कैमरे में सही ओरिएंटेशन कैसे पता चलेगा? यानी उपयोगकर्ता 90 (चित्र) के घूर्णन पर तस्वीर ले सकता है।
मैंने विंडो प्रबंधक के डिफ़ॉल्ट प्रदर्शन पर getRotation()
का उपयोग करने का प्रयास किया है, लेकिन अनुरोधित ओरिएंटेशन को पोर्ट्रेट पर सेट करने के साथ ही केवल Surface.ROTATION_0
लौटाता है।
अद्यतन: मेरी अन्य समस्या को स्पष्ट करने के लिए, अगर मैं छवि को सहेजना नहीं चाहता तो चित्र कॉलबैक में केवल byte[]
डेटा से अभिविन्यास निर्धारित कर सकता हूं?
अद्यतन: इस कोड के साथ नीचे दिए गए उत्तरों का प्रयास करने के बाद मुझे जो कुछ मिल रहा है वह ExifInterface.ORIENTATION_NORMAL है। मैंने कैमरे से लौटाई गई फ़ाइल को सहेजने के लिए अपना कोड भी बदल दिया है क्योंकि मुझे यकीन नहीं है कि byte[]
डेटा के साथ अभिविन्यास निर्धारित करने का एक आसान तरीका है।
private PictureCallback mPicture = new PictureCallback()
{
@Override
public void onPictureTaken(byte[] data, Camera camera)
{
File directory = new File(android.os.Environment.getExternalStoragePublicDirectory(android.os.Environment.DIRECTORY_PICTURES),
"MyApp");
if(!directory.exists())
{
if(!directory.mkdirs())
{
Log.d("CAMERA", "Unable to create directory to save photos.");
return;
}
}
File file = new File(directory.getPath() + file.separator + "IMG_" + SimpleDateFormat.getDateTimeInstance().toString() + ".jpg");
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fos.close();
ExifInterface exif = new ExifInterface(file.getCanonicalPath());
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
int rotate = 0;
switch (orientation)
{
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
case default:
break;
}
}
};
कर सकते हैं किसी भी एक मदद http://stackoverflow.com/questions/28379130/how -to-set-camera-image-ओरिएंटेशन –