Датчик приближения считывающего устройства с NativeScript - PullRequest
0 голосов
/ 18 марта 2019

Я разрабатываю кроссплатформенное мобильное приложение, и мне нужно прочитать датчик приближения устройства, который с помощью датчика приближения устройства предоставляет информацию о расстоянии до ближайшего физического объекта.

Кто-нибудь реализовал это / написал плагин для этой цели в Nativescript?

1 Ответ

0 голосов
/ 21 марта 2019

Я нашел частичный ответ на мой вопрос о том, как читать датчик приближения в Android с помощью NativeScript.Я обновлю свой ответ, как только напишу код для iOS.

Чтобы получить доступ к сенсору в Android, сначала мы должны импортировать модули «приложения» и «платформы», которые предоставляет NS:

import * as application from "tns-core-modules/application";
import * as platform from 'tns-core-modules/platform';

declare var android: any;

Затем приобретите Android Sensor Manager, датчик приближения и создайте прослушиватель событий Android и зарегистрируйте его для прослушивания изменений в датчике приближения.

Чтобы зарегистрировать датчик приближения:

registerProximityListener() {

        // Get android context and Sensor Manager object
        const activity: android.app.Activity = application.android.startActivity || application.android.foregroundActivity;
        this.SensorManager = activity.getSystemService(android.content.Context.SENSOR_SERVICE) as android.hardware.SensorManager;

        // Creating the listener and setting up what happens on change
        this.proximitySensorListener = new android.hardware.SensorEventListener({
            onAccuracyChanged: (sensor, accuracy) => {
                console.log('Sensor ' + sensor + ' accuracy has changed to ' + accuracy);
            },
            onSensorChanged: (event) => {
                console.log('Sensor value changed to: ' + event.values[0]);
            }
        });

        // Get the proximity sensor
        this.proximitySensor = this.SensorManager.getDefaultSensor(
            android.hardware.Sensor.TYPE_PROXIMITY
        );

        // Register the listener to the sensor
        const success = this.SensorManager.registerListener(
            this.proximitySensorListener,
            this.proximitySensor,
            android.hardware.SensorManager. SENSOR_DELAY_NORMAL
        );

        console.log('Registering listener succeeded: ' + success);
    }

Чтобы отменить регистрацию прослушивателя событий, используйте:

unRegisterProximityListener() {
        console.log('Prox listener: ' + this.proximitySensorListener);
         let res = this.SensorManager.unregisterListener( this.proximitySensorListener);
         this.proximitySensorListener = undefined;
         console.log('unRegistering listener: ' + res);
    };

Конечно, мы можем изменить android.hardware.Sensor.TYPE_PROXIMITY на любой другой датчик, который нам предоставляет ОС Android.Подробнее о датчиках в Обзор датчиков Android .Я не проверял это с другими датчиками, поэтому реализация может быть немного другой, но я думаю, что концепция все та же

Это решение основано на решении Брэда Мартина, найденном здесь .

Чтобы ответить на этот вопрос, опубликуйте свое решение для iOS, если оно у вас есть.

...