MainActivity.java 17 KB

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