2015-02-22 11 views
6
Camera cam = Camera.open();  
Parameters p = cam.getParameters(); 
p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
cam.setParameters(p); 
cam.startPreview(); 

उपरोक्त खुराक लॉलीपॉप पर काम नहीं करती है, क्योंकि लॉलीपॉप में कैमरा को हटा दिया गया है। मैं लॉलीपॉप में प्रोग्राम प्रोग्रामिक रूप से चालू करने के लिए कोई अन्य तरीका नहीं ढूंढ पा रहा हूं। इसे कैसे प्राप्त किया जा सकता है। अग्रिम में धन्यवाद।लॉलीपॉप में फ्लैशलाइट प्रोग्रामेटिक रूप से एंड्रॉइड

उत्तर

4
mCam = Camera.open(); 
Camera.Parameters p = mCam.getParameters(); 
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
mCam.setParameters(p); 
mPreviewTexture = new SurfaceTexture(0); 
try { 
    mCam.setPreviewTexture(mPreviewTexture); 
} catch (IOException ex) { 
    // Ignore 
} 
mCam.startPreview(); 

यह एंड्रॉइड 5.0.x पर मेरे लिए काम करता है। और कैमरा उपयोग के लिए मैनिफेस्ट में अनुमति जोड़ने के लिए मत भूलना।

<uses-permission android:name="android.permission.CAMERA" /> 
+0

धन्यवाद। मेरे लिए काम किया :) –

+3

कैमरा वर्ग अब बहिष्कृत है। क्या आप एक ही काम करने के लिए कोई विकल्प जानते हैं? –

+2

एसडीके> 21 – Yehonatan

1

आपका कोड वास्तव में काम करना चाहिए। कृपया जांच लें कि आप कैमरा ठीक से उपयोग करने के लिए अनुमति कहा:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.FLASHLIGHT"/> 

यह अपने अन्य विनिर्देशों के ऊपर अपने AndroidManifest में जोड़ा जाना चाहिए।

इसके अतिरिक्त, विभिन्न उपकरणों और एक उदाहरण है जो यहाँ हर डिवाइस पर काम करना चाहिए के बारे में एक दिलचस्प चर्चा है: Flashlight in Android

आप न बहिष्कृत API का उपयोग करना चाहते हैं, तो आप देख सकते हैं:

Package Summary of Camera2

Camera device specification on the new api

दुर्भाग्य से मैं नहीं आपको एक उदाहरण नई एपीआई का उपयोग कर के लिए, क्योंकि मैं इसे अपने आप अभी तक उपयोग नहीं किया दे सकते हैं।

4

कैमरा क्लास अब बहिष्कृत है।

लॉलीपॉप के लिए ऊपर आप camera2 एपीआई

उपयोग करने की आवश्यकता है ताकि 6.0 & उपकरण के ऊपर, सबसे अच्छा तरीका है के लिए nickkadrov के समाधान doesent काम/बंद फ्लैश प्रकाश

public static void toggleFlashLight(){ 
    toggle=!toggle; 
       try { 
      CameraManager cameraManager = (CameraManager) getApplicationContext().getSystemService(Context.CAMERA_SERVICE); 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
       for (String id : cameraManager.getCameraIdList()) { 

        // Turn on the flash if camera has one 
        if (cameraManager.getCameraCharacteristics(id).get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) { 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
          cameraManager.setTorchMode(id, true); 
         } 
        } 
       } 
      } 
     } catch (Exception e2) { 
      Toast.makeText(getApplicationContext(), "Torch Failed: " + e2.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 


} 
नीचे कोड की कोशिश है

जहां टॉगल क्लास लेवल स्थिर बूलियन वैरिएबल है जिसका डिफ़ॉल्ट मान झूठा

static boolean toggle=false; 
+1

जब अनुमति वास्तव में आवश्यक है तो बहिष्कृत? मेरे डिवाइस पर यह बिना काम करता है। –

+1

आपके कोड को API23 की आवश्यकता है जो वास्तव में एंड्रॉइड 6.0 है। – Roman

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