Mobile Security Guard-advanced tools-remote telephone query and security guard local query
AToolsActivity. java
// Advanced tool public class AtoolsActivity extends Activity {@ Override protected void onCreate (Bundle savedInstanceState) {// TODO Auto-generated method stub super. onCreate (savedInstanceState); setContentView (R. layout.Activity_atools);} // Phone number query... we useDatabase QueryPublic void numberAddressQuery (View view) {startActivity (new Intent (this,AddressActivity. Class ));}}
AddressActivity.java
// Public classAddressActivityExtends Activity {private EditText etNumber; private TextView tvResult; @ Override protected void onCreate (Bundle savedInstanceState) {// TODO Auto-generated method stub super. onCreate (savedInstanceState); setContentView (R. layout.Activity_address); EtNumber = (EditText) findViewById (R. id. et_number); tvResult = (TextView) findViewById (R. id. TV _result); // listens for the change of edittext, and monitors the change of etNumber in TexiView in real time.AddTextChangedListener(New TextWatcher () {@ Override public void onTextChanged (CharSequence s, int start, int before, int count) {// TODO Auto-generated method stub // callback String address = AddressDao when the text changes. getAddress (s. toString (); tvResult. setText (address) ;}@ Override public void beforeTextChanged (CharSequence s, int start, int count, int after) {}@ Override public void afterTextChanged (Editable s) {}}) ;}// start the query,QueryButton click event public void query (View view) {String number = etNumber. getText (). toString (). trim (); if (! TextUtils. isEmpty (number) {String address = AddressDao. getAddress (number); tvResult. setText (address);} When else {// The Window jitters when no input is made, this is an Animation shake =AnimationUtils. LoadAnimation (this, R. anim. shake); etNumber. startAnimation (shake); vibrate () ;}// shake the phone. You must have the permission to private void vibrate () {Vibrator v = (Vibrator)GetSystemService (VIBRATOR_SERVICE); // System ServiceV. vibrate (2000); // v. vibrate (new long [] {,},-1); // wait for 1 s, shake 2 S, wait 1 S, shake 3 s. -1 indicates that the task is executed only once without repeating. Rhythmic vibration // v. cancel (); // cancel the vibration }}
Shake. xml
<? Xml version = "1.0" encoding = "UTF-8"?> <Translate xmlns: android = "http://schemas.android.com/apk/res/android" android: duration = "1000" android: fromXDelta = "0" android:Interpolator= "@ Anim/Cycle_7"Android: toXDelta =" 10 "/> <! -- Interpolator 7 cycles, that is, 1 s jitters 7 times -->
cycle_7.xml
<?xml version="1.0" encoding="utf-8"?><cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:cycles="7" />
AddressDao. java
/***** */Public class AddressDao {private static final String PATH = "data/com. mxn. mobilesafe/files/address. db "; // note that the path must be a file in the data/data Directory; otherwise, the database will not be able to access it. // return the place name public static String getAddress (String number) {String address = "Unknown number"; // obtain the database object //Read only from the default location, but not assert. Therefore, you need to copy the database to the data/data directory. Copy the database on the SplashActivity page. SQLiteDatabaseDatabase = SQLiteDatabase. openDatabase (PATH, null, SQLiteDatabase. OPEN_READONLY); // mobile phone number features: 1 + (3, 4, 5, 6, 7, 8) + (9 digits) // Regular Expression // ^ 1 [3-8] \ d {9} $ if (number. matches ("^ 1 [3-8] \ d {9} $") {// match the mobile phone number Cursor cursor = database. rawQuery ("Select location from data2 where id = (select outkey from data1 where id =?) ", New String [] {number. substring (0, 7)}); if (cursor. moveToNext () {address = cursor. getString (0);} cursor. close ();} else if (number. matches ("^ \ d + $") {// match the number switch (number. length () {case 3: address = "alarm phone"; break; case 4: address = "Simulator"; break; case 5: address = "customer service phone"; break; case 7: case 8: address = "local phone"; break; default: // 01088881234 // 048388888888 if (number. startsWith ("0 ") & Amp; number. length ()> 10) {// It may be a long-distance call. // some area numbers are 4 and some area numbers are 3 (including 0) // first query the four-digit area code Cursor cursor = database. rawQuery ("select location from data2 where area =? ", New String [] {number. substring (1, 4)}); if (cursor. moveToNext () {address = cursor. getString (0);} else {cursor. close (); // query the three-digit region code cursor = database. rawQuery ("select location from data2 where area =? ", New String [] {number. substring (1, 3)}); if (cursor. moveToNext () {address = cursor. getString (0);} cursor. close () ;}} break ;}} database. close (); // close the database return address ;}}