本机传感器在Nativescript中的可访问性

本教程将介绍本机传感器在Nativescript中的可访问性的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

本机传感器在Nativescript中的可访问性 教程 第1张

问题描述

我决定是选择用Nativescript(跨平台iOS/Android)实现一个应用程序,还是相应地用Java/SWIFT实现一个"真正的"本地应用程序。

丢弃明显的1代码基与2代码基的讨论,我不确定Nativescript的限制(如果有的话)。

主要担忧在于该应用程序对传感器数据的大量需求。我必须在应用程序中使用大量的手机传感器。类似android sensors的传感器。

我基本上了解Nativescript所做的事情。但问题是,考虑到应用程序对本机传感器数据的大量需求,选择Nativescript是否会影响传感器的可访问性或整体性能?

我找到了几个插件(如accelerometer plugin),我担心每个传感器都需要一个插件,也许某些传感器会缺少一个插件。这是否应该引起关注?

推荐答案

访问任何传感器都没有限制。正如您提到的,有加速度计插件和其他一些插件。然而,根据传感器的不同,您可能需要为这些API编写一些逻辑,如果您正在考虑使用Java/SWIFT?,这应该不会太有挑战性。Here是我最近在WearOS应用程序上需要心率传感器的地方,目前这还不是一个生产项目,但计划最终发布。

如OP注释中所述:您最终将使用传感器侦听器来访问在onSensorChanged事件中返回的数据。

以下代码说明怎么访问设备上的心率传感器。

首先,获取设备传感器管理器:

从NS导入/需要application模块,以便您可以访问下面示例中的Android活动

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

  const activity: android.app.Activity =
 application.android.startActivity ||
 application.android.foregroundActivity;
  const mSensorManager = activity.getSystemService(
 android.content.Context.SENSOR_SERVICE
  ) as android.hardware.SensorManager;

然后创建我们的监听器:

const myHrListener = new android.hardware.SensorEventListener({
onAccuracyChanged: (sensor, accuracy) => {},
onSensorChanged: event => {
  console.log(event.values[0]);
  const HR = event.values[0].toString().split('.')[0];
  // HR is the BPM from the sensor here
}
 });

然后我们需要获取传感器:

const mHeartRateSensor = mSensorManager.getDefaultSensor(
 android.hardware.Sensor.TYPE_HEART_RATE
  );

最后,我们注册监听器:

const didRegListener = mSensorManager.registerListener(
 myHrListener,
 mHeartRateSensor,
 android.hardware.SensorManager.SENSOR_DELAY_NORMAL
  );

registerListener方法返回一个布尔值,以便您可以检查返回的布尔值是否为true,这意味着侦听器已成功注册,并且当传感器在onSensorChanged事件中提供数据时,请问获得数据。

好了关于本机传感器在Nativescript中的可访问性的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。