Режим киоска / закрепление экрана в Android Wear

Я занимаюсь разработкой приложения Android Wear для Sony Smartwatch 3 с Android Lollipop и не могу найти способ реализовать рабочий режим киоска.
Я смотрел везде, но ничего не работает.
Также пробовал закрепление экрана, но нет возможности сделать это на часах (вручную) и добавить startLockStart() к моему onCreate, кажется, ничего не делает - я все еще могу выйти из приложения.

Любая помощь или подтверждение того, что это невозможно, будет принята с благодарностью

2 ответа

Я написал блог на Medium для достижения режима киоска на износ Android. Он полностью работает на Wear OS 2.X и на 90% на Wear OS 1.X. Пожалуйста, проверьте средний.

Шаги:

1: REORDER_TASKS: переупорядочить приложение, чтобы оно было добавлено в onPause приложения.

ActivityManager activityManager = (ActivityManager) getApplicationContext()
                .getSystemService(Context.ACTIVITY_SERVICE);

        activityManager.moveTaskToFront(getTaskId(), 0);

2: установить категории для активности в манифесте:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.HOME" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

3: переопределить функциональность кнопки

public boolean onKeyDown(int keyCode, KeyEvent event){
    if (event.getRepeatCount() == 0) {
        if (keyCode == KeyEvent.KEYCODE_STEM_1) {
            // Do stuff
            return true;
        } else if (keyCode == KeyEvent.KEYCODE_STEM_2) {
            // Do stuff
            return true;
        } else if (keyCode == KeyEvent.KEYCODE_STEM_3) {
            // Do stuff
            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

4: Отключить функцию смахивания, применяя тему

<style name="AppTheme" parent="@android:style/Theme.DeviceDefault">
    <item name="android:windowSwipeToDismiss">false</item>
</style>

5: перезапустить приложение при загрузке

Замечания:

Эта функция не удобна для пользователя, и Android Play Store не одобрит ее, если у вас нет веских причин.

Убедитесь, что вы используете Android L MR1 (Android 5.1). В устройствах Sony, работающих под управлением L MR0 (Android 5.0), в реализации startLockTask в Google была ошибка, которая позволяла выйти из приложения.

Так как это ванильный код Google, вполне вероятно, что такая же ситуация на других устройствах OEM.

Также убедитесь, что lockTaskMode вашего приложения не 1 или 3, если вы не используете приложение администратора устройства.

Надеюсь это поможет.

/ Марек (сотрудник Sony Mobile)

Другие вопросы по тегам