Android中的自助服务终端模式/屏幕固定

时间:2015-12-24 09:07:16

标签: android wear-os sony-smartwatch kiosk-mode android-screen-pinning

我正在使用Android Lollipop开发适用于Sony Smartwatch 3的Android佩戴应用程序,并且似乎无法找到实现工作自助终端模式的方法。
我到处都看,但似乎什么都没有用 还尝试了屏幕固定,但是没有选项可以在手表上进行(手动)并将startLockStart()添加到我的onCreate并不会对任何事情做任何事情 - 我仍然可以退出该应用。< / p>

非常感谢任何不可能的帮助或确认

2 个答案:

答案 0 :(得分:1)

确保运行Android L MR1(Android 5.1)。在运行L MR0(Android 5.0)的Sony设备中,startLockTask的Google实施有一个错误,可以退出该应用。

由于这是一款纯粹的Google代码,因此很可能与其他OEM设备的情况相同。

如果您没有使用设备管理应用,请确保您的应用lockTaskMode不是1或3。

希望这有帮助。

/ Marek(索尼移动员工)

答案 1 :(得分:0)

我已经在Medium上写了博客,以便在Android上实现Kiosk模式。它完全适用于Wear OS 2.X和Wear OS 1.X的90%。请查看Medium

步骤:

1:REORDER_TASKS:在应用暂停时将您的应用重新排序到顶部。

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商店不会批准这些功能,除非您有充分的理由