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






鲁公网安备 37090202000844号

