直播源码必须实现的功能之青少年模式实现
直播源码是当下流行的社交娱乐平台,随着保护青少年政策的出台,青少年模式成为直播源码必须实现的功能。云豹科技作为优质的直播源码提供商,积极响应保护青少年的号召,精心设计开发了青少年模式,下面我们就从源码的角度探究一下青少年模式的具体实现方式。
一、功能介绍
如图所示,用户登录直播源码后,出现提示用户进入青少年模式的弹窗,点击弹窗跳转到青少年模式开启页面。用户点击开启按钮,进行密码设置,输入密码即可开启青少年模式。
开启青少年模式后,直播源码中的充值打赏等功能会被禁用,而且统计每日累积在线时长,达到最大在线时长后提示下线或者关闭青少年模式,关闭青少年模式需要输入密码,并且支持修改密码。
二、代码实现
青少年模式实现的部分代码如下:
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