您的位置:首页 > 其它

检测sim卡是否绑定&获取电话管理者&MD5加密&登录处理判断逻辑&手势识别滑动处理&简单动画处理

2016-06-04 20:41 393 查看
获取到电话管理者

private TelephonyManager mTm;
mTm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
获取到sim卡
String sim = SharedPreferencesUtils.getSting(SetUpActivity2.this, ConstansUtils.SJFD_SIM, "");

// 判断当前的sim卡是否缓存到sp里面。如果没有缓存。说明没有绑定
if (TextUtils.isEmpty(sim)) {
// 没有绑定 需要绑定
iv_state.setImageResource(R.drawable.lock);
// bindUnbindSim.setr
// 获取到sim卡串号 唯一
simSerialNumber = mTm.getSimSerialNumber();
// 绑定保存数据
SharedPreferencesUtils.saveString(SetUpActivity2.this, ConstansUtils.SJFD_SIM, simSerialNumber);

} else {
// 已经绑定。需要解绑
iv_state.setImageResource(R.drawable.unlock);
// 解绑保存数据
SharedPreferencesUtils.saveString(SetUpActivity2.this, ConstansUtils.SJFD_SIM, "");
}
回显数据
String result = SharedPreferencesUtils.getSting(this, ConstansUtils.SJFD_SIM, "");
// 判断sim卡是否为null
if (TextUtils.isEmpty(result)) {
iv_state.setImageResource(R.drawable.unlock);
} else {
iv_state.setImageResource(R.drawable.lock);
}
展示安全的土司

public class ToastUtils {
/**
* 展示安全的土司
* @param activity
* @param msg 描述信息
*/
public static void safeToast(final Activity activity,final String msg){
//Thread.currentThread().getName()获取到线程的名字
if(Thread.currentThread().getName().equals("main")){
Toast.makeText(activity, msg, 0).show();
}else{
activity.runOnUiThread(new Runnable() {

@Override
public void run() {
Toast.makeText(activity, msg, 0).show();

}
});
}

}
}
MD5加密

public class Md5Utils {
/**
* 对明文进行加密
* @param input
* @return
*/
public static String getMd5(String input) {
String md5 = "";
// 获取字节数组
byte[] data = input.getBytes();
// 获取j2se MessageDigest 帮助开发者进行摘要
try {
MessageDigest dm = MessageDigest.getInstance("MD5");
byte[] result = dm.digest(data);// 16

StringBuffer sb = new StringBuffer();
for (byte item : result) {
String hex = Integer.toHexString(item & 0xFF);
if (hex.length() == 1) {
sb.append('0').append(hex);
} else {
sb.append(hex);
}
}
// 特征值 转成32 md5
md5 = sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return md5;
}

/**
* 获取md5从文件
* @param filePath
* @return
* @throws NoSuchAlgorithmException
* @throws FileNotFoundException
* @throws IOException
*/
public  static String getMd5FromFile(String filePath) throws Exception {
// 针对每部分的byte[]
MessageDigest md = MessageDigest.getInstance("MD5");
FileInputStream input = new FileInputStream(new File(filePath));
byte[] buffer = new byte[1024 * 10];
int len = 0;
while ((len = input.read(buffer)) != -1) {
md.update(buffer, 0, len);
}
input.close();
// 合成md5
byte[] bytes = md.digest();// 16汇总 md5 128 bit 1byte=8bit 16byte
// byte-->0x
// 32位
StringBuffer sb = new StringBuffer();
for (byte temp : bytes) {
String hex = Integer.toHexString(temp & 0xff);// 不一定是1byte 变两位
if (hex.length() == 1) {
sb.append("0").append(hex);// 为了达到32 必段填充0
} else {
sb.append(hex);
}
}
String md5 = sb.toString().toLowerCase();
return md5;
}
}
判断用户输入密码是否正确

1,初次进入未设置密码

private void initDialog() {
// 初始化对话框
AlertDialog.Builder builder = new Builder(this);
// 把xml转换成view
View v = View.inflate(this, R.layout.dialog_init, null);
// 输入密码
final EditText et_dialog_init_pwd = (EditText) v.findViewById(R.id.et_dialog_init_pwd);
// 确认密码
final EditText et_dialog_init_confirm = (EditText) v.findViewById(R.id.et_dialog_init_confirm);
// 确定
Button bt_dialog_init_ok = (Button) v.findViewById(R.id.bt_dialog_init_ok);
// 取消
Button bt_dialog_init_cancel = (Button) v.findViewById(R.id.bt_dialog_init_cancel);
// 设置确定点击事件
bt_dialog_init_ok.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 获取到密码
String pwd = et_dialog_init_pwd.getText().toString().trim();
// 判断用户是否输入了密码
if (TextUtils.isEmpty(pwd)) {
ToastUtils.safeToast(MainActivity.this, "请输入密码");
return;
}

// 获取到确认密码
String confirm_pwd = et_dialog_init_confirm.getText().toString().trim();
// 判断用户是否输入确认密码
if (TextUtils.isEmpty(confirm_pwd)) {
ToastUtils.safeToast(MainActivity.this, "请输入确认密码");
return;
}
// 判断用户2次输入的密码是否一致
if (!pwd.equals(confirm_pwd)) {
ToastUtils.safeToast(MainActivity.this, "两次密码输入不一致");
return;
}

Intent intent = new Intent(MainActivity.this, SetUpActivity1.class);
startActivity(intent);

SharedPreferencesUtils.saveString(MainActivity.this, ConstansUtils.SJFD_PWD, Md5Utils.getMd5(pwd));

// 对话框消失
dialog.dismiss();
Log.d(tag, "确定");
System.out.println("确定");
}
});
// 取消对话框监听
bt_dialog_init_cancel.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Log.d(tag, "取消");
dialog.dismiss();
}
});

// 设置view
builder.setView(v);
// 展示对话框
dialog = builder.show();
}
2,设置过密码,验证
private void setEnterDialog() {
// 初始化对话框
//		AlertDialog.Builder builder = new Builder(getApplication());
//		AlertDialog.Builder builder = new Builder(getApplicationContext());
//		AlertDialog.Builder builder = new Builder(this);//OK
//		AlertDialog.Builder builder = new Builder(MainActivity.this);//OK
AlertDialog.Builder builder = new Builder(getBaseContext());//不OK
// 把xml转换成view
View v = View.inflate(this, R.layout.dialog_enter_pwd, null);

// 输入密码
final EditText et_dialog_init_pwd = (EditText) v.findViewById(R.id.et_dialog_init_pwd);
// 确定
Button bt_dialog_init_ok = (Button) v.findViewById(R.id.bt_dialog_init_ok);
// 取消
Button bt_dialog_init_cancel = (Button) v.findViewById(R.id.bt_dialog_init_cancel);
// 设置确定点击事件
bt_dialog_init_ok.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 获取到密码
String pwd = et_dialog_init_pwd.getText().toString().trim();
// 判断用户是否输入了密码
if (TextUtils.isEmpty(pwd)) {
ToastUtils.safeToast(MainActivity.this, "请输入密码");
return;
}
String sjfd_pwdmd5 = SharedPreferencesUtils.getSting(MainActivity.this, ConstansUtils.SJFD_PWD, "");
// 注意:需要把pwd写在前面
// 防止程序为null
String inputmd5=Md5Utils.getMd5(pwd);
if (!(inputmd5).equals(sjfd_pwdmd5)) {
ToastUtils.safeToast(MainActivity.this, "密码输入错误");
return;
}
// 获取到用户防盗保护的状态
boolean result = SharedPreferencesUtils.getBoolean(MainActivity.this, ConstansUtils.SJFD_PROTECTING, false);

if (result) {
Intent intent = new Intent(MainActivity.this, LostFindActivity.class);
startActivity(intent);
} else {

Intent intent = new Intent(MainActivity.this, SetUpActivity1.class);
startActivity(intent);
}

// 对话框消失
dialog.dismiss();
Log.d(tag, "确定");
System.out.println("确定");
}
});

bt_dialog_init_cancel.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Log.d(tag, "取消");
dialog.dismiss();
}
});

// 设置view
builder.setView(v);
// 展示对话框
dialog = builder.show();

}
手势识别滑动处理
private GestureDetector gestureDetector;
//初始化手势识别器
gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){
/**
* e1 :表示手指第一次触摸屏幕的的值
* e2 :表示手指 离开屏幕的值
* velocityX : x轴每秒钟移动的像素
* velocityY : Y轴的像素
*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {

float mMotionEventRaw1x = e1.getRawX();
float mMotionEventRaw1y = e1.getRawY();

float mMotionEventRaw2x = e2.getRawX();
float mMotionEventRaw2y = e2.getRawY();

System.out.println("mMotionEventRaw1x---" + mMotionEventRaw1x);
System.out.println("mMotionEventRaw1y---" + mMotionEventRaw1y);
System.out.println("mMotionEventRaw2x---" + mMotionEventRaw2x);
System.out.println("mMotionEventRaw2y---" + mMotionEventRaw2y);

System.out.println("velocityX---" + velocityX);
System.out.println("velocityY---" + velocityY);
//判断当前x轴的位置移动是否大于y轴位置移动
if(Math.abs(mMotionEventRaw1y - mMotionEventRaw2y) > Math.abs(mMotionEventRaw1x - mMotionEventRaw2x)){
return false;
}
/**
* 说明是下一步
*/
if(mMotionEventRaw1x > mMotionEventRaw2x + 50){
doNext();
}
/**
* 上一步
*/
if(mMotionEventRaw1x < mMotionEventRaw2x + 50){
doPre();
}

return super.onFling(e1, e2, velocityX, velocityY);
}

});


@Override
public boolean onTouchEvent(MotionEvent event) {
//让手势识别器生效
gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}

1、屏蔽竖值方向的滑动;

if(Math.abs((e2.getRawY() - e1.getRawY())) >100){

Toast.makeText(getBaseContext(), "不能这样滑动", 0).show();

return true;

}

2、屏蔽滑动慢

if(Math.abs(velocityX)< 200){

Toast.makeText(getBaseContext(), "滑动有些慢哥们", 0).show();

return true;

}

简单动画处理

//过渡动画
/**
* 第一个参数表示进来的时候的动画
* 第二个参数表示出去的时候的动画
*/
overridePendingTransition(R.anim.pre_enter, R.anim.pre_exit);

finish();
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-100%p"
android:toXDelta="0"
android:duration="300"
>
</translate>


知识拓展:

有些手机上无法出现动画:是因为把播放动画的功能关闭了,为什么关闭呢,是为什么省点;

Android手机省电的几个技巧:

1.不要用动态的壁纸;

2.屏幕亮度调低一些;

3.3G网络关闭使用,2G网络,当然是不需要上网的情况下;

4.关闭手机执行动画;

5.经常杀一下后台的应用;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: