Оптимизирован сервис Bluetooth, Android - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть приложение, которое использует BLE для обмена данными с устройством с поддержкой BLE.
Я использовал его для разработки и тестирования с использованием Asus Zenfone Max 3 (Android 8.1), и у меня не было проблем.
ЗатемЯ получил Asus Zenfone Max Pro M1 (Android 8.1).Приложение подключается к устройству, но не может обмениваться какими-либо данными.
После долгих исследований выяснилось, что мне пришлось перейти к Оптимизация батареи в настройках смартфона и изменить Bluetooth и Служба Bluetooth MIDI до Не оптимизировано , и тогда мое приложение работало нормально.
Я не знаю, связано ли это значение по умолчанию с ОС (Android One) или смодель телефона.Но это действительно дурацкая вещь, потому что я не должен говорить каждому клиенту делать это (в настройках его телефона), чтобы приложение работало!
Итак, мой вопрос, это их способ узнать, откод, оптимизированы ли эти сервисы или нет, и могу ли я изменить эти настройки с помощью кода или любых других идей, которые могли бы лучше решить эту проблему.

1 Ответ

0 голосов
/ 07 декабря 2018

Добавьте это разрешение в ваш файл манифеста:

<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);

ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...