android基礎(chǔ)筆記版手機衛(wèi)士_第1頁
android基礎(chǔ)筆記版手機衛(wèi)士_第2頁
android基礎(chǔ)筆記版手機衛(wèi)士_第3頁
android基礎(chǔ)筆記版手機衛(wèi)士_第4頁
android基礎(chǔ)筆記版手機衛(wèi)士_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、TJXUOJ 課程同步筆記RVNG 版By 編程,始于衛(wèi)士-04Android 號碼歸屬地查詢()在功能列表中點擊高級工具,就進入了的高級工具界面,該界面主要有號碼歸屬地查詢、備份、常用號碼查詢、程序鎖等功能。那么本文檔中需要實現(xiàn)的是號碼歸屬地查詢功能。號碼歸屬地查詢界面比較簡單,如下圖所示。1.1 高級工具、號碼歸屬地查詢 UI 的實現(xiàn)步驟: 、創(chuàng)建 GZUURYEGIZOOZ_ SR 布局文件 、編寫 :UURYIZOOZ_ 類,同時在 TJXUOJ3GTOLKYZ SR 中該 IZOOZ_。public class AToolivity extendivity private Progr

2、essBar progressBar1;Overrideprotected void onCreate(Bundle savedInstane) super.onCreate(savedInstane);setContentView(R.layouools_activity);progressBar1 = (ProgressBar) findViewById(R.gressBar1);/ 號碼歸屬地查詢public void numberQuery(View view) entent = new ent(this, AddressQueryActivity.class);startActivi

3、ty(ent);/備份功能public void smsBackup(View view) final File file = new File(Environment.getExternalStorageDirectory(), smsbackup.xml);final ProgressBar progressBar = new ProgressBar(this);new Thread(new Runnable() Overridepublic void run() if(Environment.getExternalStorageSe().equals(Environment.MEDIA_

4、MOUNTED) SmsBackupUtil.smsBackup(AToolfile.getAbsolutePath(),progressBar1);ivity.this,Looprepare();ivity.this, 備份成功, 0).show();Toast.makeTexLooper.loop();ool).start();/打開常用號碼查詢界面public void commonNumberQuery(View view)entent = new ent(this, CommonNumberQueryActivity.class);startActivity(ent);/打開程序鎖界

5、面public void entryAppLock(View view)entent = new ent(this, AppLockActivity.class);startActivity(ent); 、創(chuàng)建號碼歸屬地查詢的 TSHKXEGJJXKYYEWKX_EGIZOOZ_ SR 布局文件1.2 號碼歸屬地查詢代碼實現(xiàn)實現(xiàn)號碼歸屬地查詢有多種方法,比如聯(lián)網(wǎng)查詢,通過可以調(diào)用互聯(lián)網(wǎng)服務(wù),還有就是將常用的號碼前綴存放在數(shù)據(jù)庫庫,然后將該數(shù)據(jù)庫保存在本地。在的文檔中只演示如何從數(shù)據(jù)庫中進行歸屬地的查詢。為了演示,提供了一個號碼號碼歸屬地數(shù)據(jù)庫 GJJXKYY JH。用 972OZK +VKXZ

6、 6XULKYYOUTGR 工具打開該數(shù)據(jù)庫,截圖如下。該數(shù)據(jù)庫有兩張表,JGZG 和 JGZG ,其中 JGZG 保存的是號碼前綴和歸屬地。JGZG 保存的是地區(qū)信息和歸屬地。address.db 放到工程目錄中的 assets 目錄下。在 SplashActivity類中,該資源拷貝到.itheima.mobileSafe/files/address.db 中??截惔a如下:private void copyDB(String name) InputStream inputStream = null; FileOutputStream outputStream = null; try in

7、putStream = getAssets().open(name); File file = new File(getFilesDir(), name); if (file.exists() Toast.makeText(this, 數(shù)據(jù)已經(jīng)初始化完成,return;outputStream = new FileOutputStream(file); len = -1;Toast.LENGTH_SHORT).show();byte buff = newbyte1024;while(len=inputStream.read(buff)!=-1)outputStream.write(buff,

8、0,len);inputStream.close(); outputStream.close(); catch (IOException e) e.prStackTrace();finallyif (inputStream!=null) try inputStream.close(); catch (IOException e) e.prStackTrace();if (outputStream!=null) try outputStream.close(); catch (IOException e) e.prStackTrace();在 IUS OZNKOSG SUHORK9GLK JH

9、JGU 包(如果沒有該創(chuàng)建)下創(chuàng)建 JJXKYY7KX_*GU 類,在該類中實現(xiàn)對數(shù)據(jù)庫的操作。代碼如下:public class AddressQueryprivate sic String path = .itheima.mobileSafe/files/address.db;public sic String queryAddress(String number) if (number.length()=7) query(null);else tv_addressResult.setText();Overridepublic void beforeTextChanged(CharSequ

10、en, start, count, after) Overridepublic void afterTextChanged(Editable s) );/執(zhí)行查詢方法public void query(View view) String phone = et_phoneNumber.getText().toString();if (TextUtils.isEmpty(phone) Toast.makeText(this, 號碼不能為空, Toast.LENGTH_SHORT).show();/如果號碼為空,則抖動編輯框,抖動效果是在xml 文件中定義的Animation shake = Ani

11、mationUtils.loadAnimation(this, R.anim.shake); et_phoneNumber.startAnimation(shake);vibrator.vibrate(2000);return; else if (phone.length() 7) Toast.makeText(this, 號碼至少為 7 位, Toast.LENGTH_SHORT).show(); Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); et_phoneNumber.startAnimation(

12、shake);return;String reg = 1345678d5,9$;if (!phone.matches(reg) Toast.makeText(this, 輸入的號碼不合法。, Toast.LENGTH_SHORT).show();Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);et_phoneNumber.startAnimation(shake);return;String address = AddressQuery.queryAddress(phone);Message msg = ne

13、w Message();msg.what = RESULT_OK;if (TextUtils.isEmpty(address) msg.obj = 對不起,沒有查詢到該號碼; else msg.obj = address;handler.sendMessage(msg);在上面代碼中當(dāng)用戶沒有輸入任何內(nèi)容卻要查詢號碼時,給了用戶抖動編輯框的提示。這個抖動效果主要是通過動畫實現(xiàn)的。代碼很簡單,只有如下的兩行。需要在 GTOS 目錄中創(chuàng)建 YNGQK SR 文件。文件目錄結(jié)構(gòu)如左圖所示。YNGQK SR 文件如下:上面的代碼中用到了 GTJXUOJ OTZKXVURGZUX 屬性,該屬性在這里代表

14、當(dāng)前動畫執(zhí)行的次數(shù),I_IRKE SR 文件如下:?xml verolator xmlns:android= HYPERLINK http:/s/ http:/s/apk/res/androidandroid:cycles=7 /Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); et_phoneNumber.startAnimation(shake); 、在代碼中 OHXGZUX 對象 、獲取 OHXGZUX 實例 、調(diào)用 OHXGZUX 的vibrate 方法,參數(shù)代表時長(毫秒)在上面代碼中 OHXGZK

15、 方法有兩種方法重載形式,第二種比較難理解,VGZZKXT 是一個數(shù)組,存放的是時長(毫秒),第二個參數(shù)代表從 VGZZKXT 數(shù)組的腳標(biāo)位置開始依次數(shù)組中的時長。 來電號碼歸屬地顯示()打開衛(wèi)士的設(shè)置中心,添加 條功能設(shè)置項,設(shè)置來電顯示、設(shè)置來電歸屬地樣式、設(shè)置歸屬地顯示框位置。勾選上設(shè)置來電顯示后當(dāng)有撥打進來界面會顯示歸屬地,該歸屬地顯示在一個控件中,該控件可以拖動,并且在設(shè)置來電歸屬地樣式中可以設(shè)置該控件的。效果圖如下:vibrator.vibrate(500);/-1不重復(fù),非-1為從pattern的指定下標(biāo)開始重復(fù)long pattern = 100,200,100,200,50,

16、50;vibrator.vibrate(pattern, 1);vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);private Vibrator vibrator;效果()當(dāng)用戶輸入某些內(nèi)容不合法時可以通過效果來提示用戶,那么效果怎么實現(xiàn)呢?步驟: 、在 TJXUOJ3GTOLKYZ SR 中添限 、編輯設(shè)置中心布局文件 YKZZOTMEGIZOOZ_ SRitheima:desc_off=itheima:desc_on= itheima:title=設(shè)置單注意:上面的布局文件我給出了所有的設(shè)置中心的布局內(nèi)容,但是具體的代碼實現(xiàn)

17、會在以后的文檔中實現(xiàn)。在本文檔中只實現(xiàn)來電號碼歸屬地顯示功能。 、創(chuàng)建 9KZZOTMIZOOZ_ 類,對應(yīng) YKZZOTMEGIZOOZ_ SR 布局文件。 、在類中來電顯示控件 、在 UT)XKGZK 方法中,初始化 siv_showAddress 控件,同時判斷來電顯示服務(wù)是否已經(jīng)開啟,如果開啟則將 INKIQHU 勾選上,否則不勾選。/獲取設(shè)置來電顯示控件siv_showAddress = (SettingItemView) findViewById(R.id.siv_showAddress);/獲取來電顯示服務(wù)是否開啟running = ServiAddressService.cla

18、ss.getName();if (running) /如果開啟則將checkbox 勾選上siv_showAddress.setChecked(true); else siv_showAddress.setChecked(false); 、創(chuàng)建用于判斷服務(wù)是否啟動的工具類 9KXOIK9ZGZY;ZOR,該類代碼如下:public class ServiusUtil isRunning(Context context,String name)public sic/獲取 ActivityManager 對象ActivityManager activityManager = (ActivityMa

19、nager) context.getSystemService(Context.ACTIVITY_SERVICE);/通過 activityManager 對象獲取正在運行的service,參數(shù)代表獲取的最大個數(shù)List runningServi=activityManager.getRunningServi(100);for(RunningServiceInfo info : runningServi)System.out.prln(當(dāng)前開啟的服務(wù)有:+info.service.getCla標(biāo)服務(wù)+name);ame()+-目/如果服務(wù)的名稱等于指定的名稱則代表服務(wù)正在運行if (info.

20、service.getClaame().equals(name) return true;return false;usUtil.isRunning(this,/設(shè)置來電顯示private SettingItemView siv_showAddress; 、在 9KZZOTMIZOOZ_ 的UT)XKGZK 方法中給 showAddress 綁定點擊事件。/來電顯示服務(wù)意圖showAddressent = new ent(this, AddressService.class);/給設(shè)置來電顯示控件設(shè)置點擊事件siv_showAddress.setOnClickListener(new OnCl

21、ickListener()Overridepublic void onClick(View v) if (siv_showAddress.isChecked() siv_showAddress.setChecked(false);stopServi else howAddressent);siv_showAddress.setChecked(true);/開啟來電顯示服務(wù)startServihowAddressent); 、編寫 JJXKYY9KXOIK 類,在該類中實現(xiàn)了具體的歸屬地服務(wù)。 成員變量ephonyManager 對象/privateephonyManager tm;自定義的器類

22、繼承了 API 的PhoneS/eListenerprivate MyPhoneSeListener listener; 編寫 MyPhoneSeListener 類,繼承 6NUTK9ZGZK2OYZKTKX 類class MyPhoneSeListener extends PhoneSeListener Overridepublic void onCallSeChanged(se, StringingNumber) super.onCallSeChanged(se,ingNumber);switch (se) caseephonyManager.CALL_SE_RINGING:/打進來了/

23、獲取打進來的,然后查詢歸屬地String address = AddressQuery.queryAddress(ingNumber);/顯示歸屬地Toast.makeText(getApplicationContext(), address, 1).show(); myToast(address);break;被掛斷了才空閑caseephonyManager.CALL_SE_IDLE:/if (view != null) wm.removeView(view); view = null;break; default:break;注意:上面的上面的 S 對象和 S_:UGYZ 方法用到了自定義吐司的知識,這塊知識在下一個文檔中會作詳細的講解。 、在 JJXKYY9KXOIK 類的UT)XKGZK 中實現(xiàn)。/獲取ephonyManager 服務(wù)對象tm = (ephonyManager) getSystemService(EPHONY_SERVICE);/ 創(chuàng)建一個PhoneSeListener 對象listener= new MyPhoneSeListener()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論