2016-02-25 21 views
16

Sto lavorando su un'applicazione IOS e Android, con una telecamera personalizzata (è per questo che non userò modulo telecamera http://docs.nativescript.org/ApiReference/camera/README)NativeScript: custom telecamera

ho bisogno di avere il mio UI sopra la fotocamera anteprima.

Posso farlo con Nativescript?

Impossibile trovare alcun modulo/plug-in con questa funzionalità. È difficile scrivere il mio modulo?

Qualsiasi aiuto sarà apprezzato ...

Grazie

+3

È possibile utilizzare le API native iOS e Android per creare la tua vista personale (ad esempio usando Placeholder) - ecco p app campione di roof-of-concept https://github.com/NickIliev/sample-cameraApp –

+0

@NickIliev - quell'esempio github non funziona per me. Qualche cosa aggiornato? Pubblicherò su Git il diario di domani - se lo stai seguendo – Marko

risposta

0

Utilizzare il SurfaceView in layout.xml

<SurfaceView 
       android:id="@+id/surfaceview" 
       android:layout_centerHorizontal="true" 
       android:layout_width="350dp" 
       android:layout_height="260dp" /> 

uso seguente codice nella classe di attività

SurfaceView surfaceView; 
CameraSource cameraSource; 

final TextRecognizer textRecognizer = new TextRecognizer.Builder(getApplicationContext()).build(); 
     cameraSource = new CameraSource.Builder(getApplicationContext(), textRecognizer) 
       .setFacing(CameraSource.CAMERA_FACING_BACK) 
       .setAutoFocusEnabled(true) 
       .build(); 
     surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() { 
      @Override 
      public void surfaceCreated(SurfaceHolder surfaceHolder) { 

       try { 
        cameraSource.start(surfaceView.getHolder()); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

      @Override 
      public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) { 

      } 

      @Override 
      public void surfaceDestroyed(SurfaceHolder surfaceHolder) { 
       cameraSource.stop(); 
      } 
     }); 
     textRecognizer.setProcessor(new Detector.Processor<TextBlock>() { 
      @Override 
      public void release() { 


      }