直播源码必须实现的功能之青少年模式实现

发布来源:云豹科技
发布人:云豹科技
2022-08-18 10:01:36

直播源码是当下流行的社交娱乐平台,随着保护青少年政策的出台,青少年模式成为直播源码必须实现的功能。云豹科技作为优质的直播源码提供商,积极响应保护青少年的号召,精心设计开发了青少年模式,下面我们就从源码的角度探究一下青少年模式的具体实现方式。

一、功能介绍

如图所示,用户登录直播源码后,出现提示用户进入青少年模式的弹窗,点击弹窗跳转到青少年模式开启页面。用户点击开启按钮,进行密码设置,输入密码即可开启青少年模式。

开启青少年模式后,直播源码中的充值打赏等功能会被禁用,而且统计每日累积在线时长,达到最大在线时长后提示下线或者关闭青少年模式,关闭青少年模式需要输入密码,并且支持修改密码。


二、代码实现

青少年模式实现的部分代码如下:


public class TeenagerActivity extends AbsActivity implements View.OnClickListener {
 
 
    public static void forward(Context context) {
        Intent intent = new Intent(context, TeenagerActivity.class);
        context.startActivity(intent);
    }
 
 
    private TextView mBtnSwitch;
    private TextView mTip;
    private View mBtnPwd;
    private boolean mIsOpen;//是否开了青少年模式
    private boolean mHasSetPwd;//是否设置过密码
 
    @Override
    protected int getLayoutId() {
        return R.layout.activity_teenager;
    }
 
    @Override
    protected void main() {
        setTitle(WordUtil.getString(R.string.a_120));
        mBtnSwitch = findViewById(R.id.btn_switch);
        mBtnSwitch.setOnClickListener(this);
        mTip = findViewById(R.id.tip);
        mBtnPwd = findViewById(R.id.btn_modify_pwd);
        mBtnPwd.setOnClickListener(this);
        MainHttpUtil.checkTeenager(new HttpCallback() {
            @Override
            public void onSuccess(int code, String msg, String[] info) {
                if (code == 0 && info.length > 0) {
                    JSONObject obj = JSON.parseObject(info[0]);
                    mIsOpen = obj.getIntValue("status") == 1;
                    mHasSetPwd = obj.getIntValue("is_setpassword") == 1;
                    if (mHasSetPwd) {
                        if (mBtnPwd != null) {
                            mBtnPwd.setVisibility(View.VISIBLE);
                        }
                    }
                    if (mIsOpen) {
                        if (mTip != null) {
                            mTip.setText(R.string.a_121_2);
                        }
                        if (mBtnSwitch != null) {
                            mBtnSwitch.setText(R.string.a_126);
                        }
                    } else {
                        if (mTip != null) {
                            mTip.setText(R.string.a_121);
                        }
                        if (mBtnSwitch != null) {
                            mBtnSwitch.setText(R.string.a_125);
                        }
                    }
                }
            }
        });
    }
 
    @Override
    public void onClick(View v) {
        int i = v.getId();
        if (i == R.id.btn_switch) {
            TeenagerPwdActivity.forward(mContext, mIsOpen, mHasSetPwd,1);
        } else if (i == R.id.btn_modify_pwd) {
            TeenagerModifyPwdActivity.forward(mContext);
        }
    }
 
 
    @Override
    protected void onDestroy() {
        MainHttpUtil.cancel(MainHttpConsts.CHECK_TEENAGER);
        super.onDestroy();
    }
}
public class TeenagerModifyPwdActivity extends AbsActivity implements SplitEditText.OnInputListener {
 
    public static void forward(Context context) {
        Intent intent = new Intent(context, TeenagerModifyPwdActivity.class);
        context.startActivity(intent);
    }
 
    private InputMethodManager imm;
    private SplitEditText mEditText1;
    private SplitEditText mEditText2;
    private SplitEditText mEditText3;
    private View mBtnUse;
 
 
    @Override
    protected int getLayoutId() {
        return R.layout.activity_teenager_modify_pwd;
    }
 
    @Override
    protected void main() {
        setTitle(WordUtil.getString(R.string.a_119));
        imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
 
        mEditText1 = findViewById(R.id.edit_1);
        mEditText1.setOnInputListener(this);
 
 
        mEditText2 = findViewById(R.id.edit_2);
        mEditText2.setOnInputListener(this);
 
        mEditText3 = findViewById(R.id.edit_3);
        mEditText3.setOnInputListener(this);
 
        bindView(mEditText1, R.id.wrap_1);
        bindView(mEditText2, R.id.wrap_2);
        bindView(mEditText3, R.id.wrap_3);
 
        mBtnUse = findViewById(R.id.btn_use);
        mBtnUse.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                modifyPwd();
            }
        });
 
    }
 
 
    private void bindView(final SplitEditText editText, int wrapId) {
        View wrap = findViewById(wrapId);
        wrap.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                return true;
            }
        });
        wrap.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                editText.requestFocus();
                imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
            }
        });
    }
 
 
    @Override
    public void onInputFinished(String content) {
 
    }
 
    @Override
    public void onInputChanged(String text) {
        String originPwd = mEditText1.getText().toString();
        String newPwd1 = mEditText2.getText().toString();
        String newPwd2 = mEditText3.getText().toString();
        mBtnUse.setEnabled(originPwd.length() == 4 && newPwd1.length() == 4 && newPwd2.length() == 4);
 
    }
 
 
 
    @Override
    protected void onDestroy() {
        MainHttpUtil.cancel(MainHttpConsts.MODIFY_TEENAGER_PWD);
        super.onDestroy();
    }
 
 
 
    private void modifyPwd(){
        String originPwd = mEditText1.getText().toString();
        String newPwd1 = mEditText2.getText().toString();
        String newPwd2 = mEditText3.getText().toString();
 
        if (!newPwd1.equals(newPwd2)) {
            ToastUtil.show(R.string.reg_pwd_error);
            return;
        }
        MainHttpUtil.modifyTeenagerPwd(originPwd, newPwd1, new HttpCallback() {
            @Override
            public void onSuccess(int code, String msg, String[] info) {
                if (code == 0) {
                    if (imm != null) {
                        imm.hideSoftInputFromWindow(findViewById(R.id.edit_1).getWindowToken(), 0);
                    }
                    finish();
                }
                ToastUtil.show(msg);
            }
        });
 
    }
}


这样就实现了青少年模式,云豹科技据具有多年直播源码开发经验,功能稳定流畅,提供定制开发,感兴趣的伙伴可以查看官网了解更多内容。

声明:以上内容为云豹科技原创,未经作者本人同意,禁止转载,否则将追究相关法律责任www.yunbaokj.com

声明:
以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任