2016-03-25 9 views
2

Ich verwende SurfaceView und Googles Mobile Vision-Bibliothek. Für viele Geräte sieht es gut aus, aber wenn Sie mit wenigen Geräten wie Nexus 7 arbeiten, wird die Kameraansicht im Querformat angezeigt. Dies erschwert das Scannen von Barcodes usw., da es schwierig ist, diese richtig zu fokussieren und zu positionieren. In der Vision-Bibliothek gibt es keine Methode, so dass sie die Hardware-Kamera zurückgibt, so dass wir die Ausrichtung verwalten können, als ob die Kameraansicht die Landschaft zurückgibt. Dann können wir die Ansicht dynamisch drehen, um sie wie ein Porträt aussehen zu lassen.Oberflächenansicht mit Mobile Vision Zeigt die Kamera in Querformat

So wollte ich fragen, ob es irgendeine Möglichkeit für Geräte wie Nexus 7 gibt, um die Kamera oder Ansicht zu Portrait zu ändern.

Jede Hilfe wird begrüßt! Danke

+0

Sie eine Lösung für diese gefunden? –

Antwort

0

Viele Tabs hat ihre Kamera montiert gedreht, so dass, wenn horizontal gehalten wird, das Bild als "Porträt" genommen wird, obwohl das Bild tatsächlich breiter als hoch ist. Ich habe es auf die harte Tour gelernt, auf einer App, die ich vor einiger Zeit gebaut habe. Die einzige Möglichkeit bestand darin, den Bildschirmaspekt gegenüber dem Bildaspekt und der Bilddrehung zu überprüfen. Wenn Sie diese vergleichen, können Sie ableiten, ob ein Kamerabild richtig gedreht wurde oder ob es eine Nachdrehung von 90 Grad benötigt.

0

fand ich eine Lösung für mich eine Idee bekommen von dieser Personen beantworten: https://stackoverflow.com/a/41634379/5028531

Also, was ich tat:

 cameraPreview.getHolder().addCallback(new SurfaceHolder.Callback() { 
     @Override 
     public void surfaceCreated(SurfaceHolder holder) { 
      if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { 
       try { 

        cameraSource.start(cameraPreview.getHolder()); 
        Field[] declaredFields = CameraSource.class.getDeclaredFields(); 

        for (Field field : declaredFields) { 
         if (field.getType() == Camera.class) { 
          field.setAccessible(true); 
          try { 
           Camera camera = (Camera) field.get(cameraSource); 
           if (camera != null) { 
            Camera.Parameters params= camera.getParameters(); 
            camera.setDisplayOrientation(0); 
           } 
          } catch (IllegalAccessException | RuntimeException e) { 
           e.getMessage(); 
          } 

          break; 
         } 
        } 
       } catch (IOException e) { 
        Log.e("CAMERA SOURCE", e.getMessage()); 
        e.printStackTrace(); 
       } 
      } else { 
       Log.w("CAMERA SOURCE", "Permission not granted"); 
       Toast.makeText(getActivity(), "Camera permission denied", Toast.LENGTH_SHORT).show(); 
      } 
     } 
Verwandte Themen