Как получить доступ к аппаратному уровню при создании плагина NativeScript? - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь создать плагин для доступа к камере, и я не уверен, как получить доступ к оборудованию. Когда я импортирую android, он говорит, что нет камеры2 неопределенной.

import { Common } from './CameraPlugin.common';
import { android } from 'tns-core-modules/application';
export class CameraPlugin extends Common {
    constructor() {
        super();
    }
    public takePicture() {
        const cameraManager = new android.hardware.camera2.CameraManager();
        cameraManager.openCamera();
    }
}

1 Ответ

1 голос
/ 08 января 2020

NativeScript имеет собственный доступ к устройствам Java / Kotlin (на Android) и ObjC / Swift (на iOS) с некоторыми незначительными ограничениями. (1) (2)

Сначала вам не нужно / не нужно импортировать "android" из чего-либо; это действительный глобальный код на всех Android устройствах. Поэтому все, что вам нужно сделать, это сделать android. (или java., или любое другое пространство имен, к которому вам нужен доступ). Импортированный вами файл просто скрыл глобал android и заменил его другим объектом, который наверняка не ' это не так.

Одно слово предостережения; если вы не установили типизацию платформы, ваш редактор НЕ будет знать, что такое android., android.hardware., et c. Когда вы go на самом деле запустить его; NativeScript будет знать, что это такое, и будет прекрасно его использовать.

Если вы хотите, чтобы ваш редактор знал, что это такое, вам нужно установить платформу: npm i --save-dev tns-platform-declarations, и вы можете прочитать, как их настроить, здесь: https://github.com/NativeScript/NativeScript/tree/master/tns-platform-declarations

Документация NativeScript, связанная с тем, как движок обращается к собственному коду.

(1) - https://docs.nativescript.org/core-concepts/android-runtime/overview

(2) - https://docs.nativescript.org/core-concepts/ios-runtime/Overview

...