使用SDK

初始化

 // 初始化安全键盘配置
        KeyboardConfigApi.init(context);
        // 设置键位显示与键值映射数据从云端拉取
        KeyboardConfigApi.getInstance().setKeyboardDataConfigMode(KeyboardConfigMode.CONFIG_MODE_ONLINE);
        // 设置键位显示与键值映射关系数据网络拉取接口的实现
        KeyboardConfigApi.getInstance().setFetchRemoteConfigDataNetHelper(new DefaultGetKeyPositionNetHelper());
        // 设置为自定义键位布局
        KeyboardConfigApi.getInstance().customKeyboardLayoutProvider(new DefaultKeyboardLayoutProvider());
        // 设置键位数据更新频率 300000 -> 5分钟  默认10分钟
        KeyboardConfigApi.getInstance().setUpdateKeyPositionFrequency(300000);

//        customKeyPositionProvider.doShuffle(SubKeyboard.SUB_KEYBOARD_LETTER, true);
//        CustomKeyPositionProvider customKeyPositionProvider = new CustomKeyPositionProvider();
//        KeyboardConfigApi.getInstance().customKeyPositionProvider(customKeyPositionProvider);
//        KeyboardConfigApi.getInstance().setKeyboardDataConfigMode(KeyboardConfigMode.CONFIG_MODE_CUSTOM);

安全键盘控件使用方式

  • 手动创建键盘View的使用方式

XML创建View:

<com.tencent.tmf.keyboard.component.keyboard.CustomKeyboard
    android:id="@+id/keyboard"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="#454A4D"
    android:visibility="visible" />
 mSafeKeyboard = findViewById(R.id.keyboard);

代码创建View:

CustomKeyboard mSafeKeyboard = new CustomKeyboard(context);

使用:

        CustomKeyboardWrapper wrapper = new CustomKeyboardWrapper(this, mSafeKeyboard);
        // 属性设置
        setProperty(wrapper);
        /**
         * 注意:
         * 此方法只需调用一次 每次调用都会向tmf 安全键盘服务请求 键盘映射数据 与 解密上下文
         */
        wrapper.wrap(new IRelayoutKeyboardHelper() {
            @Override
            public void doRelayout() {
                // 键盘重新布局了,输入框内的旧数据需要清除掉,让用户重新完整输入一遍
            }
        });
        /**
         * 注意:
         * 解密上下文的获取需要在安全键盘绘制完成之后
         * 如果在 wrapper.wrap 方法之后立即获取则有可能为null
         */
        byte[] context = wrapper.getContext();

        private void setProperty(CustomKeyboardWrapper wrapper) {
        // 设置会话ID 为当前页面
        wrapper.setSessionId(this.hashCode());
        // 隐藏键盘收起图标
        wrapper.hideCollapseIcon();
        //设置键盘品牌名称
        wrapper.setBrandName("TMF安全键盘");
        //设置键盘商标
        wrapper.setBrandIcon(getResources().getDrawable(R.drawable.brand_icon));
        //设置键盘预览
        wrapper.setKeyboardPreview(new DefaultKeyItemPreview(this, mSafeKeyboard));
        /**
         * 键盘的输入类型
         * 默认类型 : 字母 数字 字符 可以切换
         * 数字键盘 : 仅包含数字 不可切换
         * 身份证键盘: 仅包含数字 + X   不可切换
         */
        wrapper.setInputType(KeyboardInputType.NONE);

        //设置字母键盘 功能键背景色
        wrapper.setFnKeyFillStyle(SubKeyboard.SUB_KEYBOARD_LETTER,
                getResources().getColor(R.color.default_fn_key_normal_color),
                getResources().getColor(R.color.default_fn_key_press_color));
        //设置字母键盘 回车键背景色
        wrapper.setEnterKeyFillStyle(SubKeyboard.SUB_KEYBOARD_LETTER,
                getResources().getColor(R.color.default_enter_key_normal_color),
                getResources().getColor(R.color.default_enter_key_press_color));
        //设置字母键盘 内容键背景色
        wrapper.setContentKeyFillStyle(SubKeyboard.SUB_KEYBOARD_LETTER,
                getResources().getColor(R.color.default_content_key_normal_color),
                getResources().getColor(R.color.default_content_key_press_color));

        //设置数字键盘 功能键背景色
        wrapper.setFnKeyFillStyle(SubKeyboard.SUB_KEYBOARD_NUMBER,
                getResources().getColor(R.color.default_fn_key_normal_color),
                getResources().getColor(R.color.default_fn_key_press_color));
        //设置数字键盘 回车键背景色
        wrapper.setEnterKeyFillStyle(SubKeyboard.SUB_KEYBOARD_NUMBER,
                getResources().getColor(R.color.default_enter_key_normal_color),
                getResources().getColor(R.color.default_enter_key_press_color));
        //设置数字键盘 内容键背景色
        wrapper.setContentKeyFillStyle(SubKeyboard.SUB_KEYBOARD_NUMBER,
                getResources().getColor(R.color.default_content_key_normal_color),
                getResources().getColor(R.color.default_content_key_press_color));

        //设置字符键盘 功能键背景色
        wrapper.setFnKeyFillStyle(SubKeyboard.SUB_KEYBOARD_SYMBOL,
                getResources().getColor(R.color.default_fn_key_normal_color),
                getResources().getColor(R.color.default_fn_key_press_color));
        //设置字符键盘 回车键背景色
        wrapper.setEnterKeyFillStyle(SubKeyboard.SUB_KEYBOARD_SYMBOL,
                getResources().getColor(R.color.default_enter_key_normal_color),
                getResources().getColor(R.color.default_enter_key_press_color));
        //设置字符键盘 内容键背景色
        wrapper.setContentKeyFillStyle(SubKeyboard.SUB_KEYBOARD_SYMBOL,
                getResources().getColor(R.color.default_content_key_normal_color),
                getResources().getColor(R.color.default_content_key_press_color));

        // 按键监听
        wrapper.setKeyboardActionListener(new CustomKeyboardView.SafeKeyboardActionListener() {
            @Override
            public void onKey(int primaryKeyCode, MagicText magicText) {
                ToastUtil.showToast(CustomKeyboardActivity.this, magicText.getText().toString());
            }
        });
    }

更多键盘UI相关API请参考键盘UI相关API

  • 自动创建键盘View的使用方式
 /**
     * 触发浮层键盘输入
     * @param activity 当前界面对象实例
     * @param editText 输入控件
     * @param completeListener 输入完成回调接口
     */
KeyboardWrapperApi.doInputWithPopupKeyboard(KeyboardDemoActivity.this, mSafeEditText, new IInputCompleteListener() {
        @Override
        public void onComplete(byte[] context, String msg) {
            doCommit(context, msg);
        }
});

输入组件 PasswordEditText 接入

PasswordEditText为可选组件,也可以使用系统EditText代替。 直接 new 或者布局中添加如下代码:

<com.tencent.tmf.keyboard.component.text.PasswordEditText
    android:id="@+id/pwd_view"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_marginTop="100dp"
    android:background="@null"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    app:borderCorner="5dp"
    app:drawBorder="true"
    app:textGap="0dp" />

控件提供了丰富的自定义属性配置:

<declare-styleable name="PasswordEditText">
    <!-- 文字输入长度 -->
    <attr name="textLength" format="integer" />
    <!-- 有无边框 -->
    <attr name="drawBorder" format="boolean" />
    <!-- 边框宽度 -->
    <attr name="border_width" />
    <!-- 边框圆角 -->
    <attr name="borderCorner" />
    <!-- 边框颜色 -->
    <attr name="borderColor" />
    <!-- 边框填充颜色 -->
    <attr name="borderFillColor" />
    <!-- 焦点边框颜色 -->
    <attr name="focusBorderColor" />
    <!-- 焦点填充颜色 -->
    <attr name="focusBorderFillColor" />
    <!-- 文字的宽度 -->
    <attr name="textWidth" format="integer|dimension" />
    <!-- 文字的间隔 -->
    <attr name="textGap" format="integer|dimension" />
    <!-- 文字的颜色 -->
    <attr name="normalStateTextColor" />
    <!-- 是否隐藏明文 -->
    <attr name="hidePlainText" format="boolean" />
    <!-- 圆点的半径 -->
    <attr name="dotRadius" format="float|dimension" />
    <!-- 圆点的颜色 -->
    <attr name="dotColor" format="color" />
    <!-- 文字的大小 -->
    <attr name="text_size" />
</declare-styleable>

PasswordEditText 也提供属性代码设置,这里不再赘述。

输入控件与系统键盘、安全键盘的联动使用

mSafeEditText.setInputListener(new PasswordEditText.InputHandler() {

            @Override
            public void showKeyboard() {
                // 使用安全键盘
                KeyboardWrapperApi.doInputWithPopupKeyboard(KeyboardDemoActivity.this, mSafeEditText, new IInputCompleteListener() {
                    @Override
                    public void onComplete(byte[] context, String msg) {
                        doCommit(context, msg);
                    }
                });
                // 使用系统键盘
                KeyboardHelper.showKeyboard(mSafeEditText);
            }
});
Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""