Имя тега должно использовать уникальный префикс, за которым следует двоеточие (найденный тег). Например,
myapp:mywakelocktag
. Это поможет с отладкой меньше... (Ctrl + F1)Теги Wake Lock должны соответствовать соглашениям об именах, определенным в документации
PowerManager
. Идентификатор проблемы: InvalidWakeLockTag
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
float distance = sensorEvent.values[0];
if (!isVideo && !isSpeaker) {
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
if (distance < 4) {
if (wlOn != null && wlOn.isHeld()) {
wlOn.release();
}
if (pm != null) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
if (wlOff == null)
wlOff = pm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "tag");
if (!wlOff.isHeld()) wlOff.acquire();
}
}
} else {
if (wlOff != null && wlOff.isHeld()) {
wlOff.release();
}
if (pm != null) {
if (wlOn == null)
wlOn = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
if (!wlOn.isHeld()) wlOn.acquire();
}
}
}
}
Из документации по адресу https://developer.android.com/reference/android/os/PowerManager#newWakeLock(int,%20java.lang.String) тег должен следовать приведенным ниже рекомендациям. Пожалуйста, убедитесь, что вы делаете.
Рекомендуемые соглашения по присвоению имен тегам для упрощения отладки:
- используйте уникальный префикс, разделенный двоеточием, для вашего приложения/библиотеки (например, gmail: mytag), чтобы было легче понять, откуда взялись блокировки. Это пространство имен также позволит избежать коллизий для тегов внутри вашего приложения, поступающих из разных библиотек, что облегчит отладку.
- используйте константы (например, не включайте метки времени в теге), чтобы инструментам было проще объединять похожие блокировки пробуждения. При сборе данных отладки платформа отслеживает только конечное число тегов, а использование констант поможет инструментам улучшить качество данных отладки.
- Избегайте использования Class # getName() или аналогичного метода, поскольку это имя класса может быть преобразовано с помощью инструментов оптимизатора java и обфускатора.
- избегайте наматывания тега или префикса, чтобы избежать столкновения с тегами пробуждения от платформы (например, тревога).
- никогда не включайте личную информацию в целях конфиденциальности.
Решение
Ваш тег "tag"
, замените его на что-то вроде myapp:tagforclassxyz
Исправлено путем изменения "tag"
на "AppName:tag"
Это просто поиск двоеточия внутри строки. Это не очень понятное сообщение, я сначала запутался и искал решение. Я думал, что он просит меня сделать строковую переменную и ссылаться на эту переменную.