Я нашел частичный ответ на мой вопрос о том, как читать датчик приближения в 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, если оно у вас есть.