android - tutorial - NativeScript: vista de cámara personalizada
nativescript tutorial español (2)
El Placeholder permite agregar cualquier widget nativo a su aplicación. Para hacerlo, debe colocar un marcador de posición en algún lugar de la jerarquía de la interfaz de usuario y luego crear y configurar el widget nativo que desea que aparezca allí. Finalmente, pase su widget nativo a los argumentos de evento del evento creatingView.
NativeScript no tiene una vista de superficie y necesitas usar el marcador de posición en la parte superior del complemento de la cámara.
<Placeholder (creatingView)="creatingView($event)"></Placeholder>
public creatingView(args: any) { var nativeView = new android.view.SurfaceView(application.android.currentContext); args.view = nativeView; }
Estoy trabajando en una aplicación iOS y Android con una vista de cámara personalizada (por eso no usaré el módulo de cámara http://docs.nativescript.org/ApiReference/camera/README )
Necesito tener mi propia interfaz de usuario por encima de la vista previa de la cámara.
¿Puedo hacer esto con Nativescript?
No pude encontrar ningún módulo / plugin con esta característica. ¿Es esto difícil escribir mi propio módulo?
Utilice la vista de superficie en layout.xml
<SurfaceView
android:id="@+id/surfaceview"
android:layout_centerHorizontal="true"
android:layout_width="350dp"
android:layout_height="260dp" />
usar el siguiente código en la clase de actividad
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() {
}