【问题标题】:Call PCL method in background Xamarin.Forms在后台 Xamarin.Forms 中调用 PCL 方法
【发布时间】:2017-12-05 20:01:33
【问题描述】:

我目前正在开发一个 xamarin.forms 应用程序(目前只有 android)。如果连接了蓝牙设备(应用程序未运行),此应用程序应执行一些任务。任务是从传感器收集一些数据并将其写入sqlite数据库。

我设法使用广播接收器捕捉蓝牙事件......

我的问题是我应该如何收集和写入这些数据(GPS)?

我可以通过 PCL 中的一些事件给他们打电话吗? 还是我需要一些服务?还是我应该在 .android 项目中创建该功能?

我是 xamarin 和 android 的新手,所以我很感激任何帮助 :)

谢谢

【问题讨论】:

    标签: android forms xamarin broadcastreceiver printer-control-language


    【解决方案1】:

    我的问题是我应该如何收集和写入这些数据(GPS)?我可以通过 PCL 中的一些事件给他们打电话吗?还是我需要一些服务?还是我应该在 .android 项目中创建该功能?

    有几种方法可以获取传感器数据,您可以在PCL 中提供。

    方法一:

    当您在BroadcastReceiver 中捕获bluetooth 事件时,您可以在OnReceive 方法中获取传感器数据。

    方法二:

    您可以使用DependencyService 获取设备传感器数据,然后将其写入sqlite 数据库。正如文件所说:

    Xamarin.Forms 允许开发人员在特定于平台的项目中定义行为。 DependencyService 然后找到正确的平台实现,允许共享代码访问本机功能。

    关于DependencyService的使用可以阅读文档或者参考我的answer

    方法三:

    您可以使用DeviceMotionPlugin 获取这些传感器数据。当您使用这个插件时,您可以从任何项目调用CrossDeviceMotion.Current PCL 来访问API。

    更新:

    您可以在您的PCL 中实现此功能。当您使用method 2method 3 时,您可以在PCL 中获取传感器数据,然后您可以将这些数据存储到您的sqlite 中。 仍然使用原生 Android API 来获取原生 Android 中的传感器数据,但您可以在 PCL 中使用这些数据

    【讨论】:

    • 非常感谢您的回答,所以我需要将 gps 功能(地理定位器插件)和 sqlite 功能移至 .android 项目。在后台的 OnReceive() 中调用它们,当应用程序运行时使用 DependencyService 调用它们。对吧?
    • @boris_dv,我已经更新了我的答案,如果有任何问题,请随时提问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多