【问题标题】:Bluetooth service optimized, Android蓝牙服务优化,Android
【发布时间】:2018-12-07 10:21:49
【问题描述】:

我有一个使用 BLE 与支持 BLE 的设备交换数据的应用。
我曾经使用 Asus Zenfone Max 3 (Android 8.1) 进行开发和测试,没有任何问题。
然后,我得到了华硕 Zenfone Max Pro M1(Android 8.1)。应用程序连接到设备,但无法交换任何数据。
经过长时间的调查,原来我必须在智能手机的设置中去电池优化并将蓝牙蓝牙MIDI服务更改为未优化,然后我的应用运行良好。
我不知道这个默认设置是否与操作系统(Android One)或手机型号有关。但这确实是一件糟糕的事情,因为我不应该告诉每个客户(在他的手机设置中)这样做才能让应用程序正常工作!
所以,我的问题是,他们是否可以从代码中了解这些服务是否经过优化,以及我是否可以通过代码或任何其他可以更好地解决此问题的想法来更改这些设置。

【问题讨论】:

  • 在为华硕手机使用电池优化时,我在蓝牙和通知方面遇到了同样的问题,这与操作系统和用户设置有关,所以我最后显示了一个对话框,要求在发生任何问题时禁用它跨度>
  • 你怎么知道蓝牙在这种情况下是优化的?可以通过代码测试一下吗?

标签: android bluetooth bluetooth-lowenergy battery-saver


【解决方案1】:

将此权限添加到您的清单文件中:

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>

并像这样测试它:

Intent intent = new Intent();
String packageName = context.getPackageName();
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (pm.isIgnoringBatteryOptimizations(packageName))
    intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
else {
    intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
    intent.setData(Uri.parse("package:" + packageName));
}
context.startActivity(intent);

reference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2013-12-01
    • 2018-01-01
    • 2019-06-21
    • 2014-12-16
    • 2014-02-16
    • 1970-01-01
    相关资源
    最近更新 更多