MainActivity.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478
  1. package me.yoqi.mobile.safe;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.content.Context;
  5. import android.content.DialogInterface;
  6. import android.content.DialogInterface.OnCancelListener;
  7. import android.content.Intent;
  8. import android.content.SharedPreferences;
  9. import android.os.Bundle;
  10. import android.util.Log;
  11. import android.view.KeyEvent;
  12. import android.view.LayoutInflater;
  13. import android.view.View;
  14. import android.view.View.OnClickListener;
  15. import android.widget.CheckBox;
  16. import android.widget.CompoundButton;
  17. import android.widget.CompoundButton.OnCheckedChangeListener;
  18. import android.widget.EditText;
  19. import android.widget.ImageButton;
  20. import android.widget.ImageView;
  21. import android.widget.LinearLayout;
  22. import android.widget.RelativeLayout;
  23. import android.widget.SlidingDrawer;
  24. import android.widget.SlidingDrawer.OnDrawerCloseListener;
  25. import android.widget.SlidingDrawer.OnDrawerOpenListener;
  26. import android.widget.TextView;
  27. import android.widget.Toast;
  28. import org.apache.http.HttpResponse;
  29. import org.apache.http.client.ClientProtocolException;
  30. import org.apache.http.client.methods.HttpGet;
  31. import org.apache.http.impl.client.DefaultHttpClient;
  32. import org.apache.http.util.EntityUtils;
  33. import org.xml.sax.InputSource;
  34. import org.xml.sax.SAXException;
  35. import org.xml.sax.XMLReader;
  36. import java.io.IOException;
  37. import java.io.StringReader;
  38. import javax.xml.parsers.ParserConfigurationException;
  39. import javax.xml.parsers.SAXParser;
  40. import javax.xml.parsers.SAXParserFactory;
  41. import me.yoqi.mobile.handler.PhoneNumberXml;
  42. import me.yoqi.mobile.tool.BroadCastTool;
  43. public class MainActivity extends Activity implements OnClickListener {
  44. /**
  45. * 成员变量
  46. */
  47. public static boolean[] isCheckBoxChecked = new boolean[9];
  48. public static boolean[] isRadioButtonChecked = new boolean[4];
  49. public static String mUndisturbedContent = "关闭";
  50. public static String mStartTime = "23:00";
  51. public static String mEndTime = "07:00";
  52. private ImageButton mMenu_Message, mMenu_Call, mMenu_Phone, mMenu_State,
  53. mMenu_Smart, mMenu_Set;
  54. private SlidingDrawer mSlidingDrawer;
  55. private ImageView mImageView;
  56. private Intent mIntent;
  57. private Intent mServiceIntent;
  58. public static final String MESSAGE_RUBBISH_TABLE_NAME = "message_rubbish_table";
  59. EditText mInputPhoneNumber;
  60. String result;
  61. private SharedPreferences mSharedPreferences;
  62. private SharedPreferences.Editor mEditor;
  63. @Override
  64. public void onCreate(Bundle savedInstanceState) {
  65. super.onCreate(savedInstanceState);
  66. Log.d("MainActivity", "onCreate");
  67. mServiceIntent = new Intent(BroadCastTool.AUTO_START_SERVICE);
  68. confirmPw();
  69. }
  70. @Override
  71. protected void onStart() {
  72. super.onStart();
  73. Log.d("MainActivity", "onStart");
  74. }
  75. @Override
  76. protected void onResume() {
  77. Log.d("MainActivity", "onResume");
  78. super.onResume();
  79. }
  80. //监视键盘的返回键
  81. @Override
  82. public boolean onKeyDown(int keyCode, KeyEvent event) {
  83. if (keyCode == KeyEvent.KEYCODE_BACK) {
  84. new AlertDialog.Builder(MainActivity.this).setTitle("提示").setMessage(
  85. "你确定要退出吗?").setPositiveButton("确定",
  86. new DialogInterface.OnClickListener() {
  87. public void onClick(DialogInterface arg0, int arg1) {
  88. Intent mIntent = new Intent(BroadCastTool.AUTO_START_SERVICE);
  89. stopService(mIntent);
  90. MainActivity.this.finish();
  91. }
  92. }).setNegativeButton("取消", null).show();
  93. return false;
  94. } else {
  95. return super.onKeyDown(keyCode, event);
  96. }
  97. }
  98. @Override
  99. protected void onStop() {
  100. Log.d("MainActivity", "onStop");
  101. super.onStop();
  102. }
  103. @Override
  104. protected void onDestroy() {
  105. super.onDestroy();
  106. Log.d("MainActivity", "onDestroy");
  107. startService(mServiceIntent);
  108. }
  109. /**
  110. * 设置了密码保护
  111. */
  112. private void confirmPw() {
  113. mSharedPreferences = this.getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
  114. boolean isPasswordProtected = mSharedPreferences.getBoolean("isPasswordProtected", false);
  115. if (isPasswordProtected) {
  116. LayoutInflater mLI = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  117. final RelativeLayout mRL = (RelativeLayout) mLI.inflate(R.layout.protected_password_confirm, null);
  118. final EditText mEnterPw = (EditText) mRL.findViewById(R.id.protected_enter_pw);
  119. final TextView mForgetPw = (TextView) mRL.findViewById(R.id.protected_forget_pw);
  120. new AlertDialog.Builder(MainActivity.this).setTitle("密码保护").setView(mRL)
  121. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  122. public void onClick(DialogInterface arg0, int arg1) {
  123. mSharedPreferences = getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
  124. String mPw = mSharedPreferences.getString("mPW", "");
  125. if (!mPw.equals(mEnterPw.getText().toString())) {
  126. Toast.makeText(MainActivity.this, "密码错误!", Toast.LENGTH_LONG).show();
  127. confirmPw();
  128. } else {
  129. initContentView();
  130. }
  131. }
  132. }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
  133. public void onClick(DialogInterface arg0, int arg1) {
  134. MainActivity.this.finish();
  135. }
  136. }).setOnCancelListener(new OnCancelListener() {
  137. public void onCancel(DialogInterface arg0) {
  138. MainActivity.this.finish();
  139. }
  140. }).show();
  141. mForgetPw.setOnClickListener(new OnClickListener() {//对“忘记密码”的监听
  142. public void onClick(View arg0) {
  143. getBackPwByQuestion();
  144. }
  145. });
  146. } else {
  147. initContentView();
  148. }
  149. }
  150. /**
  151. * 当密码正确,或者未设置密码保护时的初始化界面
  152. */
  153. private void initContentView() {
  154. // 服务启动异常
  155. startService(mServiceIntent);
  156. setContentView(R.layout.main);
  157. initView();
  158. initListener();
  159. initSlidingListener();
  160. stopService(mServiceIntent);
  161. }
  162. /**
  163. * 用密保问题取回密码
  164. */
  165. private void getBackPwByQuestion() {
  166. LayoutInflater mLI = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  167. LinearLayout mLL = (LinearLayout) mLI.inflate(R.layout.getback_pw_by_question, null);
  168. final EditText mQuestion = (EditText) mLL.findViewById(R.id.getback_pw_question);
  169. final EditText mAnswer = (EditText) mLL.findViewById(R.id.getback_pw_answer);
  170. new AlertDialog.Builder(MainActivity.this).setTitle("取回密码").setView(mLL)
  171. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  172. public void onClick(DialogInterface arg0, int arg1) {
  173. mSharedPreferences = getSharedPreferences("SharedPreferences", Context.MODE_PRIVATE);
  174. String mQuestionStr = mSharedPreferences.getString("mPW_Question", "");
  175. String mAnswerStr = mSharedPreferences.getString("mPW_Answer", "");
  176. if (mQuestionStr.equals(mQuestion.getText().toString()) && mAnswerStr.equals(mAnswer.getText().toString())) {
  177. new AlertDialog.Builder(MainActivity.this).setMessage("恭喜你,您的密码是 " + mSharedPreferences.getString("mPW", "") + " 记住哦!").show();
  178. } else {
  179. new AlertDialog.Builder(MainActivity.this).setMessage("哎,杯具了!").show();
  180. }
  181. }
  182. }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
  183. public void onClick(DialogInterface arg0, int arg1) {
  184. }
  185. }).show();
  186. }
  187. /**
  188. * 初始化基本组件
  189. */
  190. private void initView() {
  191. mMenu_Message = (ImageButton) findViewById(R.id.ImageView01);
  192. mMenu_Call = (ImageButton) findViewById(R.id.ImageView02);
  193. mMenu_Phone = (ImageButton) findViewById(R.id.ImageView03);
  194. mMenu_State = (ImageButton) findViewById(R.id.ImageView04);
  195. mMenu_Smart = (ImageButton) findViewById(R.id.ImageView05);
  196. mMenu_Set = (ImageButton) findViewById(R.id.ImageView06);
  197. mSlidingDrawer = (SlidingDrawer) findViewById(R.id.menu_sliding);
  198. mImageView = (ImageView) findViewById(R.id.sliding_image);
  199. // mTextView = (TextView) findViewById(R.id.menu_title);
  200. }
  201. /**
  202. * 注册监听器
  203. */
  204. private void initListener() {
  205. mMenu_Message.setOnClickListener(this);
  206. mMenu_Call.setOnClickListener(this);
  207. mMenu_Phone.setOnClickListener(this);
  208. mMenu_State.setOnClickListener(this);
  209. mMenu_Smart.setOnClickListener(this);
  210. mMenu_Set.setOnClickListener(this);
  211. }
  212. /**
  213. * SlidingDrawer的开关事件监听
  214. */
  215. private void initSlidingListener() {
  216. mSlidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {
  217. public void onDrawerOpened() {
  218. mImageView.setImageResource(R.drawable.spliding_close);
  219. }
  220. });
  221. mSlidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {
  222. public void onDrawerClosed() {
  223. mImageView.setImageResource(R.drawable.spliding_open);
  224. }
  225. });
  226. }
  227. /**
  228. * 点击事件
  229. */
  230. public void onClick(View view) {
  231. switch (view.getId()) {
  232. case R.id.ImageView01:
  233. mIntent = new Intent(MainActivity.this, MessageActivity.class);
  234. MainActivity.this.startActivity(mIntent);
  235. break;
  236. case R.id.ImageView02:
  237. mIntent = new Intent(MainActivity.this, CallActivity.class);
  238. MainActivity.this.startActivity(mIntent);
  239. break;
  240. case R.id.ImageView03:
  241. phoneAera();
  242. break;
  243. case R.id.ImageView04:
  244. initChangeAudioDialog();
  245. break;
  246. case R.id.ImageView05:
  247. smartSet();
  248. break;
  249. case R.id.ImageView06:
  250. mIntent = new Intent(MainActivity.this, SetActivity.class);
  251. MainActivity.this.startActivity(mIntent);
  252. break;
  253. }
  254. }
  255. /**
  256. * 号码归属地查询
  257. */
  258. private void phoneAera() {
  259. LinearLayout mInputNumber = (LinearLayout) getLayoutInflater().inflate(R.layout.searchphone, null);
  260. mInputPhoneNumber = (EditText) mInputNumber.findViewById(R.id.phonenumber);
  261. new AlertDialog.Builder(MainActivity.this).setTitle("号码查询")
  262. .setIcon(getResources().getDrawable(R.drawable.menu_phone_press)).setView(mInputNumber)
  263. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  264. public void onClick(DialogInterface arg0, int arg1) {
  265. HttpResponse mHttpResponse = null;
  266. try {
  267. HttpGet mHttpGet = new HttpGet("http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=" + mInputPhoneNumber.getText().toString() + "&userID=");
  268. mHttpResponse = new DefaultHttpClient().execute(mHttpGet);
  269. new AlertDialog.Builder(MainActivity.this).setMessage("StatusCode is " + mHttpResponse.getStatusLine().getStatusCode()).show();
  270. if (mHttpResponse.getStatusLine().getStatusCode() == 200) {
  271. result = EntityUtils.toString(mHttpResponse.getEntity());
  272. Log.d("phonenumber", "result is " + result);
  273. SAXParserFactory mSAXParserFactory = SAXParserFactory.newInstance();
  274. SAXParser mSAXParser = mSAXParserFactory.newSAXParser();
  275. XMLReader mXMLReader = mSAXParser.getXMLReader();
  276. PhoneNumberXml mPhoneNumberXml = new PhoneNumberXml();
  277. mXMLReader.setContentHandler(mPhoneNumberXml);
  278. StringReader mStringReader = new StringReader(result);
  279. InputSource mInputSource = new InputSource(mStringReader);
  280. mXMLReader.parse(mInputSource);
  281. new AlertDialog.Builder(MainActivity.this).setMessage(PhoneNumberXml.mPhoneNumberStr).create().show();
  282. } else {
  283. Toast.makeText(MainActivity.this, "网络连接错误!", Toast.LENGTH_LONG).show();
  284. }
  285. } catch (ClientProtocolException e) {
  286. e.printStackTrace();
  287. } catch (IOException e) {
  288. e.printStackTrace();
  289. } catch (ParserConfigurationException e) {
  290. e.printStackTrace();
  291. } catch (SAXException e) {
  292. e.printStackTrace();
  293. }
  294. }
  295. }).setNegativeButton("取消", null).show();
  296. }
  297. /**
  298. * 智能收发设置
  299. */
  300. private void smartSet() {
  301. RelativeLayout intellectLayout = (RelativeLayout) getLayoutInflater()
  302. .inflate(R.layout.intellect, null);
  303. final SharedPreferences settings = getSharedPreferences("DEMO",
  304. MODE_PRIVATE);
  305. // 获得设置界面的组件
  306. mCheckbox01 = (CheckBox) intellectLayout
  307. .findViewById(R.id.intellect_checbox_1);
  308. mCheckbox02 = (CheckBox) intellectLayout
  309. .findViewById(R.id.intellect_checbox_2);
  310. mCheckbox03 = (CheckBox) intellectLayout
  311. .findViewById(R.id.intellect_checbox_3);
  312. mEditText01 = (EditText) intellectLayout
  313. .findViewById(R.id.intellect_edittext01);
  314. mEditText02 = (EditText) intellectLayout
  315. .findViewById(R.id.intellect_edittext02);
  316. // 加载界面的原始设置
  317. if (settings.getBoolean("bool01", false)) {
  318. mCheckbox01.setChecked(true);
  319. mEditText01.setVisibility(View.VISIBLE);
  320. mEditText01.setText(settings.getString("smartE01", ""));
  321. }
  322. if (settings.getBoolean("bool02", false)) {
  323. mCheckbox02.setChecked(true);
  324. mEditText02.setVisibility(View.VISIBLE);
  325. mEditText02.setText(settings.getString("smartE02", ""));
  326. }
  327. if (settings.getBoolean("bool03", false)) {
  328. mCheckbox03.setChecked(true);
  329. }
  330. // 给checkbox加监听
  331. mCheckbox01.setOnCheckedChangeListener(new Checklistenner());
  332. mCheckbox02.setOnCheckedChangeListener(new Checklistenner());
  333. mCheckbox03.setOnCheckedChangeListener(new Checklistenner());
  334. new AlertDialog.Builder(this)
  335. .setTitle("智能收发设置")
  336. .setIcon(getResources().getDrawable(R.drawable.menu_smart_press))
  337. .setView(intellectLayout)
  338. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  339. public void onClick(DialogInterface dialog, int which) {
  340. SharedPreferences.Editor sedit = settings.edit();
  341. // String use = settings.getString("username", "");
  342. // String passw = settings.getString("password", "");
  343. if (mCheckbox01.isChecked()) {
  344. boolean bool01 = true;
  345. sedit.putBoolean("bool01", bool01).commit();
  346. sedit.putString("smartE01",
  347. mEditText01.getText().toString()).commit();
  348. } else {
  349. sedit.remove("bool01").commit();
  350. sedit.remove("smartE01").commit();
  351. }
  352. if (mCheckbox02.isChecked()) {
  353. boolean bool02 = true;
  354. sedit.putBoolean("bool02", bool02).commit();
  355. sedit.putString("smartE02",
  356. mEditText02.getText().toString()).commit();
  357. } else {
  358. sedit.remove("bool02").commit();
  359. sedit.remove("smartE02").commit();
  360. }
  361. if (mCheckbox03.isChecked()) {
  362. boolean bool03 = true;
  363. sedit.putBoolean("bool03", bool03).commit();
  364. } else {
  365. sedit.remove("bool03").commit();
  366. }
  367. }
  368. }).setNegativeButton("取消", null).show();
  369. }
  370. private CheckBox mCheckbox01;
  371. private CheckBox mCheckbox02;
  372. private CheckBox mCheckbox03;
  373. private EditText mEditText01;
  374. private EditText mEditText02;
  375. /**
  376. * 智能收发checkbox的监听类
  377. *
  378. * @author yuli
  379. */
  380. class Checklistenner implements OnCheckedChangeListener {
  381. public void onCheckedChanged(CompoundButton buttonView,
  382. boolean isChecked) {
  383. if (!mCheckbox01.isChecked()) {
  384. mEditText01.setVisibility(View.GONE);
  385. } else {
  386. mEditText01.setVisibility(View.VISIBLE);
  387. }
  388. if (!mCheckbox02.isChecked()) {
  389. mEditText02.setVisibility(View.GONE);
  390. } else {
  391. mEditText02.setVisibility(View.VISIBLE);
  392. }
  393. if (!mCheckbox03.isChecked()) {
  394. Toast.makeText(MainActivity.this, "关闭了电话留言", Toast.LENGTH_SHORT).show();
  395. } else {
  396. Toast.makeText(MainActivity.this, "开启了电话留言", Toast.LENGTH_SHORT).show();
  397. }
  398. }
  399. }
  400. /**
  401. * 更改情景模式的弹出框
  402. */
  403. private void initChangeAudioDialog() {
  404. LinearLayout mLL = (LinearLayout) getLayoutInflater().inflate(R.layout.main_audio_change, null);
  405. final EditText mQJ_MS = (EditText) mLL.findViewById(R.id.edit_qingjing_ms);
  406. final EditText mQJ_JY = (EditText) mLL.findViewById(R.id.edit_qingjing_jy);
  407. final EditText mQJ_ZD = (EditText) mLL.findViewById(R.id.edit_qingjing_zd);
  408. final EditText mQJ_XL = (EditText) mLL.findViewById(R.id.edit_qingjing_xl);
  409. mSharedPreferences = getSharedPreferences("QJMO", MODE_PRIVATE);
  410. mQJ_MS.setText(mSharedPreferences.getString("mQJ_MS", ""));
  411. mQJ_JY.setText(mSharedPreferences.getString("mQJ_JY", ""));
  412. mQJ_ZD.setText(mSharedPreferences.getString("mQJ_ZD", ""));
  413. mQJ_XL.setText(mSharedPreferences.getString("mQJ_XL", ""));
  414. new AlertDialog.Builder(this)
  415. .setTitle("情景模式设置")
  416. .setIcon(getResources().getDrawable(R.drawable.menu_state_press))
  417. .setMessage("发送格式:情景指令+相应指令,如情景指令为qjzl,静音指令为jy,则发送格式为qjzl+jy")
  418. .setView(mLL)
  419. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  420. @Override
  421. public void onClick(DialogInterface dialog, int which) {
  422. String mMS = mQJ_MS.getText().toString();
  423. String mJY = mQJ_JY.getText().toString();
  424. String mZD = mQJ_ZD.getText().toString();
  425. String mXL = mQJ_XL.getText().toString();
  426. if (mMS.length() == 0 || mJY.length() == 0 || mZD.length() == 0 || mXL.length() == 0) {
  427. Toast.makeText(getApplicationContext(), "输入有误,注意任何一项不能为空", Toast.LENGTH_SHORT).show();
  428. } else {
  429. mSharedPreferences = getSharedPreferences("QJMO", MODE_PRIVATE);
  430. mEditor = mSharedPreferences.edit();
  431. mEditor.putString("mQJ_MS", mMS);
  432. mEditor.putString("mQJ_JY", mJY);
  433. mEditor.putString("mQJ_ZD", mZD);
  434. mEditor.putString("mQJ_XL", mXL);
  435. mEditor.commit();
  436. }
  437. }
  438. }).setNegativeButton("取消", null).show();
  439. }
  440. }