NativeScript: пользовательский просмотр камеры

Я работаю над приложением для iOS и Android с настраиваемым видом камеры (поэтому я не буду использовать модуль камеры http://docs.nativescript.org/ApiReference/camera/README)

Мне нужно иметь свой собственный интерфейс выше предварительного просмотра камеры.

Могу ли я сделать это с Nativescript?

Я не мог найти модуль/плагин с этой функцией. Сложно ли написать свой собственный модуль?

Ответы

Ответ 1

Используйте представление поверхности в layout.xml

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

использовать следующий код в классе действий

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() {


            }

Ответ 2

Заполнитель позволяет вам добавить любой родной виджет в ваше приложение. Для этого вам нужно поместить Placeholder где-нибудь в иерархии пользовательского интерфейса, а затем создать и настроить собственный виджет, который вы хотите там отображать. Наконец, передайте свой родной виджет аргументам события creationView.

NativeScript не имеет вида поверхности, и вам нужно использовать заполнитель поверх плагина камеры.

<Placeholder (creatingView)="creatingView($event)"></Placeholder>

public creatingView(args: any) { var nativeView = new android.view.SurfaceView(application.android.currentContext); args.view = nativeView; }