package com.yyquan.jzh.view.LockView;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.yyquan.jzh.R;
import com.yyquan.jzh.activity.LoginActivity;
import com.yyquan.jzh.activity.MainActivity;
import com.yyquan.jzh.entity.Ip;
import com.yyquan.jzh.entity.User;
import com.yyquan.jzh.util.SaveUserUtil;
import com.yyquan.jzh.util.SharedPreferencesUtil;
import com.yyquan.jzh.view.DialogView;
import com.yyquan.jzh.xmpp.XmppService;
import com.yyquan.jzh.xmpp.XmppTool;
import org.json.JSONException;
import org.json.JSONObject;
import cz.msebera.android.httpclient.Header;
/**
* 图形解锁类
*
* @author jiangzehui
*/
public class LockActivity extends Activity implements
LockPatternView.OnPatternListener {
private static final String TAG = "LockActivity";
private String url = Ip.ip + "/YfriendService/DoGetUser";
private List<LockPatternView.Cell> lockPattern;
private LockPatternView lockPatternView;
TextView tv;
Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
SharedPreferences preferences = getSharedPreferences("user_message",
MODE_PRIVATE);
String patternString = preferences.getString("lock_password", null);
if (patternString == null) {
finish();
return;
}
lockPattern = LockPatternView.stringToPattern(patternString);
setContentView(R.layout.activity_lock);
lockPatternView = (LockPatternView) findViewById(R.id.lock_pattern);
lockPatternView.setOnPatternListener(this);
tv = (TextView) findViewById(R.id.lock_text);
// 监听解锁界面右下角的账号登录
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LockActivity.this, LoginActivity.class));
finish();
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// disable back key
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onPatternStart() {
Log.d(TAG, "onPatternStart");
}
@Override
public void onPatternCleared() {
Log.d(TAG, "onPatternCleared");
}
@Override
public void onPatternCellAdded(List<LockPatternView.Cell> pattern) {
Log.d(TAG, "onPatternCellAdded");
Log.e(TAG, LockPatternView.patternToString(pattern));
// Toast.makeText(this, LockPatternView.patternToString(pattern),
// Toast.LENGTH_LONG).show();
}
@Override
public void onPatternDetected(List<LockPatternView.Cell> pattern) {
Log.d(TAG, "onPatternDetected");
if (pattern.equals(lockPattern)) {
lodingData();
// startActivity(new Intent(this, MainActivity.class));
// finish();
} else {
lockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong);
Toast.makeText(this, R.string.lockpattern_error, Toast.LENGTH_LONG)
.show();
}
}
/**
* 验证用户名和密码是否正确
*
* @param
* @param
*/
private void lodingData() {
User user = SaveUserUtil.loadAccount(LockActivity.this);
login(user.getUser(), user.getPassword());
//
}
/**
* 登录
*/
private void login(String user, String password) {
RequestParams params = new RequestParams();
params.put("user", user);
params.put("password", password);
params.put("action", "login");
AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
String str = new String(responseBody);
if (str != null) {
try {
JSONObject object = new JSONObject(str);
if (object.getString("code").equals("success")) {
object = object.getJSONObject("data");
User user = new User();
user.setUser(object.getString("user"));
user.setPassword(object.getString("password"));
user.setQq(object.getString("qq"));
user.setIcon(object.getString("icon"));
user.setNickname(object.getString("nickname"));
user.setCity(object.getString("city"));
user.setSex(object.getString("sex"));
user.setYears(object.getString("years"));
user.setQianming(object.getString("qianming"));
Message m = h.obtainMessage(1);
m.obj = user;
h.sendMessage(m);
} else {
startActivity(new Intent(LockActivity.this, LoginActivity.class));
finish();
Toast.makeText(LockActivity.this, "账号或密码有误,请重新输入", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
startActivity(new Intent(LockActivity.this, LoginActivity.class));
finish();
}
} else {
startActivity(new Intent(LockActivity.this, LoginActivity.class));
finish();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Toast.makeText(LockActivity.this, "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show();
startActivity(new Intent(LockActivity.this, LoginActivity.class));
finish();
}
});
}
Handler h = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
final User users = (User) msg.obj;
new Thread() {
@Override
public void run() {
boolean result = XmppTool.getInstance().login(users.getUser(), users.getPassword(), LockActivity.this);
if (result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
//
startService(new Intent(LockActivity.this, XmppService.class));
Intent intent = new Intent(LockActivity.this, MainActivity.class);
intent.putExtra("user", users);
SaveUserUtil.saveAccount(LockActivity.this, users);
SharedPreferencesUtil.setBoolean(LockActivity.this, "user_message", "login", true);
startActivity(intent);
finish();
Toast.makeText(LockActivity.this, "登陆成功", Toast.LENGTH_LONG).show();
}
});
} else {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(LockActivity.this, "登陆失败,请重试", Toast.LENGTH_LONG).show();
startActivity(new Intent(LockActivity.this, LoginActivity.class));
finish();
}
});
}
}
}.start();
break;
}
}
};
}