2015-10-25 14 views
5

ich folgenden Code verwenden LED-Taschenlampe einzuschalten und aus:LED-Taschenlampe auf xperia Z5

public Flashlight(SurfaceView preview, Context context){ 
     this.preview = preview; 
     this.context = context; 
     mHolder = preview.getHolder(); //mHolder is surfaceHolder 
     mHolder.addCallback(this); 
     try { 
      mCamera = Camera.open(); 
      params = mCamera.getParameters(); 
      mCamera.setPreviewDisplay(mHolder); 
      mCamera.startPreview(); 

      //AUTOFOCUS LASER FIX ON LG G3 
      List<String> focusModes = params.getSupportedFocusModes(); 
      if (focusModes.contains(params.FOCUS_MODE_INFINITY)) { 
       params.setFocusMode(params.FOCUS_MODE_INFINITY); 
      } 
      else{ 
       if (focusModes.contains(params.FOCUS_MODE_FIXED)) 
        params.setFocusMode(params.FOCUS_MODE_FIXED); 
      } 
      mCamera.setParameters(params); 
      cameraOpened = true; 
     }catch (Exception e){ 
      cameraOpened = false; 
      e.printStackTrace(); 
     } 
    } 
    private void turnOnFlashlight(){ 
     flashlightOn = true; 
     params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
     mCamera.setParameters(params); 
    } 
    private void turnOffFlashlight(){ 
     flashlightOn = false; 
     params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 
     mCamera.setParameters(params); 
    } 

Es funktioniert auf den meisten Handys, aber ich kann es auf xperia Z5 bekommen arbeiten. Ich habe nicht Z5 für das Testen, also weiß ich es nur von der Benutzerantwort. Also würde ich gerne fragen, ob es eine andere (am besten funktionierende) Möglichkeit gibt, die Taschenlampe am Xperia Z5 einzuschalten.

Dank vorwärts

+1

versuche '' 'mCamera.setPreviewTexture (new SurfaceTexture (0));' '' hinzuzufügen, das musste ich für einige Geräte hinzufügen. Ich weiß nicht, ob dein '' 'setPreviewDisplay''' schon etwas Ähnliches macht (EDIT: okay, ohne das eigentliche Gerät zum Testen ist das weit hergeholt, sorry) –

Antwort

2

Wie bereits im Kommentar erwähnt, ich sich 3 Schritte zur Herstellung des Blitzes zu sein scheinen gefunden (scheint bisher auf allen Geräten zu funktionieren)

cam.setParameters(p); // will trigger flash on most devices 
// Needed for some devices. 
cam.setPreviewTexture(new SurfaceTexture(0)); 
// Needed for some more devices. 
cam.startPreview(); 

Da Sie habe 2 davon gemacht, versuche das PreviewTexture hinzuzufügen und es sollte funktionieren. Der ganze Code einer funktionierenden Taschenlampe kann hier gefunden werden: Flashlight Widget

+0

werde es versuchen, danke – horin