开发者调试 ============================== 第三方应用安装权限 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 一敏设备允许默认情况下安装第三方应用程序,并且您还可以通过合作伙伴限制安装权限。 开放安装权限 一敏Kit平台可以通过 `https://kit.neostra.com/ `_ 登录以打开或关闭第三方应用程序安装权限 .. image:: ../images/Third-party-installation.png :width: 800 打开开发者权限 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. 点击设置>关于>版本 .. image:: ../images/DockingDebugging/OpenDeveloperRights-1.png :width: 800 2. 连续单击5次进入开发人员模式 .. image:: ../images/DockingDebugging/OpenDeveloperRights-2.png :width: 800 3. 返回上一个级别并选择开发人员模式 .. image:: ../images/DockingDebugging/OpenDeveloperRights-3.png :width: 800 4. 打开USB调试界面 .. image:: ../images/DockingDebugging/OpenDeveloperRights-4.png :width: 800 .. image:: ../images/DockingDebugging/OpenDeveloperRights-5.png :width: 800 5.完成 .. image:: ../images/DockingDebugging/OpenDeveloperRights-6.png :width: 800 调试设备 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 您可以插入USB线后进行设备调试。一敏还为设备调试许可提供了控制功能,在一敏Kit平台启用了调试许可控制之后(如下图所示)后,需要通过电子邮件获得调试许可用以调试此设备。 如果您不能直接调试,请检查合作伙伴后台是否已启用此权限。 .. image:: ../images/DockingDebugging/1.png :width: 800 注意:调试许可的控制权 仅对具有绑定合作伙伴的设备生效。 **如何debug调试设备** 如果合作伙伴启用了“调试许可控制”,则开发人员需要通过电子邮件在其自己的设备上通过电子邮件获得调试许可来调试设备。 合作伙伴可以在一敏Kit平台上添加调试人员(开发人员)的电子邮件。 获取设备调试权限步骤如下: 1.添加调试人员 在调试设备之前,需要开发人员知道设备所属的合伙伙伴账号,可以寻找公司有关的管理人员进行查询。管理人员需要在一敏Kit平台背景中添加调试人员的电子邮件。 .. image:: ../images/DockingDebugging/2.png :width: 800 2. 插入USB. 确认您拥有自己的电子邮件以调试许可后,将设备连接到计算机。 建议开发人员在Windows系统下进行调试。 .. image:: ../images/DockingDebugging/3.png :width: 800 3.获取验证代码 .. image:: ../images/DockingDebugging/4.png :width: 800 点击击上面的“USB调试”,您将通过电子邮件输入权限验证的步骤。同时,设备的USB调试模式获取验证码,然后一敏Kit将验证代码发送到电子邮件。 填写验证码,然后点击“授权并启用调试”,USB调试即可打开 4. 验证许可 .. image:: ../images/DockingDebugging/5.png :width: 800 输入先前添加的电子邮件后,点击“获取验证码”。 一敏Kit将验证码发送到电子邮件。 填写验证码,然后点击“授权并启用调试” 验证码在30分钟内可重复使用,可以使用多次。 **设备重新启动后,USB调试将自动关闭** 5.打开许可 .. image:: ../images/DockingDebugging/6.png :width: 800 打开权限后,您可以检查LogCat中是否有输出信息来判断是否可以调试设备。 特殊代码说明 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. 获取一敏设备标识 一敏建议获取以下信息,以确定其是否为一敏设备: 1.设备的品牌名称(e.g. yimin) 一敏的品牌名称统一为“yimin” 2.设备的系统模型(例如Swan 1) 系统型号由产品类型+硬件特性组成 A其中,Swift为手持收银设备,D、Swan为桌面收银设备 下载 `IminLibs.jar <../demo/IminLibs.jar>`_ 首先打包,然后在项目中引用,并按以下方式获得指定值: 获得品牌的代码: .. code-block:: java :linenos: :emphasize-lines: 1 String brand = SystemPropManager.getBrand(); 获取Model的代码: .. code-block:: java :linenos: :emphasize-lines: 1 String model = SystemPropManager.getModel(); 获取SN序列号的代码: .. code-block:: java :linenos: :emphasize-lines: 1 String sn = SystemPropManager.getSn(); 2. 隐藏并恢复底部导航栏 .. note:: (备注: (注意:一敏新开发了Kiosk屏幕控制模式。该应用程序不需要修改。状态栏和导航栏可以通过云设置隐藏,不能通过手势调用。建议合作伙伴使用一敏 Kiosk屏幕控制模式获得更好的体验)) 安卓系统提供了一种默认情况下隐藏系统导航栏的方法,但对对话框的支持较差,这导致导航栏弹出,然后在打开全屏对话框时隐藏(闪屏)。一敏UI已修复此问题 1.活动全屏 ——安卓默认支持 .. code-block:: java :linenos: :emphasize-lines: 7 public class MainActivity extends AppCompatActivity { @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); SystemUIUtils.setStickFullScreen(getWindow().getDecorView()); } } .. code-block:: java :linenos: :emphasize-lines: 14 public class SystemUIUtils { public static void setStickFullScreen(View view) { int systemUiVisibility = view.getSystemUiVisibility(); int flags = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; systemUiVisibility |= flags; view.setSystemUiVisibility(systemUiVisibility); } } 2.对话框全屏 ——本机系统中的AOSP错误将导致在打开全屏对话框时弹出导航栏,然后隐藏导航栏(启动屏幕). .. code-block:: java :linenos: :emphasize-lines: 10 public AlertDialog create(boolean fullscreen) { LayoutInflater inflater = LayoutInflater.from(context); final AlertDialog dialog = new AlertDialog(context, R.style.DialogStyle); if(fullscreen){ SystemUIUtils.setStickFullScreen(dialog.getWindow().getDecorView()); } } 3. 如何避免插入USB外接设备导致应用程序界面闪烁 在应用的AndroidManifest文件中,添加以下代码 .. image:: ../images/DockingDebugging/6.png :width: 198 .. code-block:: java :linenos: :emphasize-lines: 1 android:configChanges="navigation|keyboardHidden|keyboard" .. image:: ../images/DockingDebugging/7.png :width: 800