2012-03-13 10 views
27

मैं देशी आवेदन के साथ कैमरा खोलने के लिए एक आशय उपयोग कर रहा हूँ: हर बारइरादे के साथ फ्रंट कैमरा कैसे लॉन्च करें?

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    Uri photoUri = Uri.fromFile(getOutputPhotoFile()); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 

    startActivityForResult(intent, CAMERA_PHOTO_REQUEST_CODE); 

कैमरा है कि खोला जाता है (सामने/वापस कैमरा) पिछली बार इस देशी कैमरा अनुप्रयोग खुला था की तरह है। मतलब यह है कि अगर मैंने पिछली बार देशी कैमरा एप्लिकेशन बंद कर दिया था तो बैक कैमरा सक्रिय था, इसलिए जब मैं कैमरे के लिए इरादा लॉन्च करता हूं, तो बैक कैमरा सक्रिय होगा।

मैं इरादे से सीधे सामने वाला कैमरा लॉन्च करना चाहता हूं। क्या कोई जानता है कि ऐसा कैसे करें?

+1

यह लिंक पूरी मदद कर सकता है http://stackoverflow.com/questions/2779002/how-to-open-front-camera-on-android-platform – Triode

+0

यह बिना किसी इरादे के किया जाता है। धन्यवाद वैसे भी – Yaniv

+0

@ यानिव, क्या आपको इसके लिए समाधान मिला? – honey

उत्तर

0

क्या आपने अपने मूल कैमरा एप्लिकेशन में फ्रंट कैमरा पर स्विच करते समय adb logcat देखने का प्रयास किया है? यदि यह वास्तव में एक और गतिविधि है, तो यह वहां दिखाई देगा और आप आसानी से अपने आवेदन के इरादे की प्रतिलिपि बना सकते हैं। यदि यह दिखाई नहीं देता है, तो मुझे लगता है कि आप भाग्य से बाहर हैं।

+0

लॉगकैट पर कुछ भी प्रासंगिक नहीं है। फिर भी धन्यवाद। – Yaniv

2

कोई इरादा नहीं है (AFAIK) जो विशेष रूप से सामने वाले कैमरे को लक्षित करता है।

इसे प्रोग्रामेटिक रूप से करने के लिए: एंड्रॉइड एसडीके < = 2.2 केवल एक ही कैमरे (पहला बैक-फेस कैमरा) का उपयोग करने का समर्थन करता है। 2.3+ के लिए, आप कैमरे के माध्यम से लूप कर सकते हैं और यह पता लगा सकते हैं कि सामने वाला चेहरा कौन सा है (यदि उपलब्ध हो)। यह कुछ ऐसा होगा ...

Camera cam = null; 
Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
for (int camNo = 0; camNo < Camera.getNumberOfCameras(); camNo++) { 
    CameraInfo camInfo = new CameraInfo(); 
    Camera.getCameraInfo(camNo, camInfo); 
    if (camInfo.facing.equals(Camera.CameraInfo.CAMERA_FACING_FRONT)) { 
     cam = Camera.open(camNo); 
    } 
} 
if (cam == null) { 
    // no front-facing camera, use the first back-facing camera instead. 
    // you may instead wish to inform the user of an error here... 
    cam = Camera.open(); 
} 
// ... do stuff with Camera cam ... 

यह उदाहरण केवल कंकाल है और कोई भी (बहुत आवश्यक) त्रुटि प्रबंधन प्रदान नहीं करता है।

संपादित करें:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" android:required="false" /> 
<uses-feature android:name="android.hardware.camera.front" android:required="false" /> 
+0

मुझे आपके द्वारा लिखे गए कोड को पता है। लेकिन मुझे एक इरादे से यह करना है। फिर भी धन्यवाद। – Yaniv

+0

एक सैमसंग डिवाइस (एंड्रॉइड संस्करण 4.04) में "कैमरा खोलने में असफल रहा: कैमरा सेवा से कनेक्ट करने में विफल" हो रहा है। –

30

सावधानी के शब्द:: आप अपने प्रकट करने के लिए इन जोड़ने की जरूरत है इसकी एक हैक

आशय

intent.putExtra("android.intent.extras.CAMERA_FACING", 1); 

यह समाधान 'isn को यह जोड़े टी टिकाऊ, यह कैमरा ऐप के एक परीक्षण कोड का उपयोग कर। अधिक जानकारी के लिए एओएसपी कैमरा प्रोजेक्ट के यूटिल क्लास में "getCameraFacingIntentExtras" स्थिर विधि देखें।

अद्यतन: ऐसा लगता है कि यह है कि यह एल में अक्षम था

+0

निश्चित रूप से एक हैक, लेकिन गैलेक्सी नेक्सस पर काम करता है। – Brandon

+0

मैंने कोशिश की लेकिन यह काम नहीं करता है, क्या आप मुझे नरक कर सकते हैं ?? – LuminiousAndroid

+0

नेक्सस 5 –

0

इस प्रयास करें:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { 
    intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1); 
} else { 
    intent.putExtra("android.intent.extras.CAMERA_FACING", 1); 
} 
8

एंड्रॉयड 7.1 के लिए Google कैमरा के शॉर्टकट से लिया (लेकिन बड़े Androids साथ काम करना चाहिए)

intent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true); 

तो, पिछले उत्तरों के साथ संयुक्त, यह मेरे लिए सभी फोन पर काम करता है, मैं इसे

पर परीक्षण कर सकता था
intent.putExtra("android.intent.extras.CAMERA_FACING", android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT); 
intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1); 
intent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true); 
+0

सैमसंग गैलेक्सी जे 7 – VishAl

+0

के लिए काम नहीं कर रहा है किसी भी मोटो में काम नहीं कर रहा:/ –

+0

काम नहीं कर रहा मोटो जी 4 प्लस (7.0) –