国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android平臺(tái)的手機(jī)防盜與定位系統(tǒng)的研究與設(shè)計(jì)

2016-10-14 01:34:04王維李亞
價(jià)值工程 2016年5期

王維 李亞

摘要:目前智能手機(jī)的功能是越來越豐富,而且更多的功能也會(huì)被植入到手機(jī)之中。手機(jī)防盜也開始成為熱門研究領(lǐng)域。文章主要是以Android手機(jī)為例,研究并設(shè)計(jì)了一種非常簡(jiǎn)單有效的手機(jī)防盜功能,能夠讓機(jī)主在丟失手機(jī)之后能夠快速定位到該機(jī),以實(shí)現(xiàn)簡(jiǎn)單的防盜功能。

Abstract: The function of the intelligent mobile phone is more and more rich, and more features will be implanted into the mobile phone. Phone anti-theft began to become a hot research field. This paper takes Android mobile phone as an example to research and design a kind of very simple and effective mobile phone anti-theft function. It can let owner to quickly locate the phone after losing it to realize a simple anti-theft function.

關(guān)鍵詞:Android;手機(jī)防盜;手機(jī)定位;GPS;Eclipse

Key words: Android;phone anti-theft;mobile phone location;GPS;Eclipse

中圖分類號(hào):TP316 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-4311(2016)05-0226-04

0 引言

隨著科技的不斷進(jìn)步和發(fā)展,智能手機(jī)已經(jīng)普及開來,人們的生活也越來越離不開智能手機(jī)。智能手機(jī)里不僅保存了短信、通信錄,甚至還保存了用戶的銀行卡密碼、QQ聊天記錄等隱私數(shù)據(jù)。手機(jī)一旦丟失,往往會(huì)給用戶造成巨大的損失。針對(duì)上述問題和實(shí)際的需求,本文主要研究了基于Android平臺(tái)的手機(jī)防盜問題的基本解決方案。

1 Android手機(jī)關(guān)于手機(jī)防盜問題的簡(jiǎn)析

1.1 Android系統(tǒng)的簡(jiǎn)介 Android 是基于Linux內(nèi)核的軟件平臺(tái)和操作系統(tǒng),采用軟件堆層(software stack)的架構(gòu),主要分為上、中、下三個(gè)層次。其中,底層是基于Linux的核心基礎(chǔ)層,最上層為各公司用Java程序自主編寫應(yīng)用軟件,函數(shù)庫Library和虛擬機(jī)Virtual Machine則分布在中間層。在用Android開發(fā)應(yīng)用軟件時(shí),首先要搭建Android開發(fā)環(huán)境,完善主體架構(gòu)和各個(gè)層次及其功能,掌握各部分的配置屬性。Android共包含有Activity(活動(dòng))、Service(服務(wù))和Broadcast Receiver(廣播)和ContentProvider(內(nèi)容提供者)四個(gè)組件,但是并非所有Android系統(tǒng)都必須具備這四大組件。用于記錄和注冊(cè)所使用的各種組件的AndroidManifest.xml文件,其主要功能是為項(xiàng)目配置權(quán)限,因此在Android系統(tǒng)中發(fā)揮著至關(guān)重要的作用。當(dāng)啟動(dòng)一個(gè)Android程序時(shí),為了避免系統(tǒng)報(bào)錯(cuò),須在AndroidManifest.xml 文件中對(duì)各組件逐一申明。

1.2 手機(jī)防盜與定位系統(tǒng)的邏輯流程(圖1)

1.3 應(yīng)用程序開發(fā)環(huán)境的搭建 該開發(fā)環(huán)境是Windows操作系統(tǒng)下,由“JDK(Javadevelopment kit)+Eclipse +Android SDK(Softwaredevelopment kit)+ADT(Android development tools)”組成。由于Android開發(fā)主要是使用了JAVA語言,故必須包括JDK,JDK是整個(gè)Java編程系統(tǒng)的核心組件,它主導(dǎo)Java的運(yùn)行環(huán)境、ava工具及Java 基礎(chǔ)類庫。Eclipse作為 Android 程序開發(fā)IDE(integrateddevelopment environment)來使用的;Android SDK 是由Google提供的完全開放源代碼的Android專屬軟件開發(fā)工具包,用來開發(fā)適用于Android平臺(tái)的第三方應(yīng)用軟件。該開發(fā)工具包中有一個(gè)專用于程序設(shè)計(jì)的布局管理器,其布局方式非常靈活,常用布局形式有三種:線性布局、相對(duì)布局和絕對(duì)布局。另外,還有一個(gè)支持Android工程和工具的通用插件——ADT,安裝該插件后,系統(tǒng)的創(chuàng)建、運(yùn)行和調(diào)試都會(huì)變得十分簡(jiǎn)單。

2 防盜的核心設(shè)計(jì)

首先需要設(shè)置一個(gè)安全號(hào)碼,該號(hào)碼與本機(jī)號(hào)碼是不一樣的,但該號(hào)碼是整個(gè)防盜體系結(jié)構(gòu)中的關(guān)鍵一環(huán),當(dāng)我們的手機(jī)丟失后,別人打開手機(jī)時(shí)換裝其他的手機(jī)卡,就會(huì)激活我們?cè)O(shè)置的安全號(hào)碼,手機(jī)會(huì)在后臺(tái)聯(lián)系到安全號(hào)碼,并向安全號(hào)碼發(fā)送各種信息,安全號(hào)碼也可以遠(yuǎn)程發(fā)送相關(guān)信息來遙控被盜手機(jī),如獲得被盜手機(jī)的具體位置,以及刪除手機(jī)所有的信息。只用通過安全號(hào)碼我們才能知道丟失的手機(jī)在哪個(gè)位置,以便于快速找到丟失的手機(jī)。設(shè)置安全號(hào)碼比較簡(jiǎn)單,只是將號(hào)碼保存到SharedPreferences中即可。

2.1 綁定SIM卡的序列號(hào) 接下來要做的事就是綁定機(jī)主的SIM卡的序列號(hào)。每個(gè)手機(jī)卡SIM卡的序列號(hào)都是唯一的,之所以不綁定手機(jī)號(hào)碼是因?yàn)橛行㏒IM卡里并沒有寫入手機(jī)號(hào)碼,比如移動(dòng)卡和聯(lián)通卡。綁定SIM卡的原理很簡(jiǎn)單,首先通過getSystemService(TELEPHONY_SERVICE),獲取TelephoneManager對(duì)象,然后通過該對(duì)象的getSimSerialNumber方法獲取SIM卡的序列號(hào)。獲取SIM卡序列號(hào)后我們將該序列號(hào)保存在SharedPreferences中即可。

以下代碼為綁定SIM卡的序列號(hào)的核心代碼:

void bindSIMSerialNumber(Context context){

// 獲得SharedPreferences 用來保存SIM的序列號(hào)

SharedPreferences sp = context.getSharedPreferences("config", MODE_PRIVATE);

String sim = sp.getString("sim", null);

if(sim==null){

//還沒有綁定SIM序列號(hào)

tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

sim = tm.getSimSerialNumber();

Editor editor = sp.edit();

editor.putString("sim", sim);

}else{

//已經(jīng)綁定序列號(hào) 不做處理

}

//提交到SharedPreferences中

editor.commit();

return ;

}

2.2 檢查SIM卡是否更換 SIM卡的插入一般都會(huì)關(guān)閉電源,就會(huì)導(dǎo)致手機(jī)的重新啟動(dòng)。最新設(shè)計(jì)的手機(jī)都是以側(cè)面卡槽換卡,同樣的也會(huì)導(dǎo)致手機(jī)重啟。因此我們需要設(shè)計(jì)一個(gè)監(jiān)聽手機(jī)重啟事件,當(dāng)手機(jī)重啟時(shí)會(huì)檢查當(dāng)前的SIM卡與之前綁定的SIM卡的序列號(hào)是否一致。如果發(fā)現(xiàn)序列號(hào)不一致,那么程序自動(dòng)給我們的安全號(hào)碼發(fā)送短信、發(fā)送位置信息等功能獲取手機(jī)當(dāng)前的位置、SIM卡等信息。同時(shí)我們也可以通過其他手機(jī)給我們的手機(jī)發(fā)送短信指令,根據(jù)不同的指令安全衛(wèi)士會(huì)做一些鎖屏、刪除數(shù)據(jù)、恢復(fù)出廠設(shè)置等操作以保護(hù)我們手機(jī)數(shù)據(jù)的安全。

判斷是否更換SIM卡的核心代碼:

<!-- 注冊(cè)一個(gè)廣播接收者 如果手機(jī)發(fā)送重啟將 會(huì)發(fā)送該廣播-->

public void onReceive(Context context, Intent intent) {

sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);

tm=(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

// 讀取之前保存的SiM信息;

String saveSim = sp.getString("sim", "");

//讀取當(dāng)前的sim卡信息

String realSim = tm.getSimSerialNumber();

//比較是否一樣

if(saveSim.equals(realSim)){

//sim沒有變更,還是原來的SIM卡

}else{

// sim 已經(jīng)變更

System.out.println("sim 已經(jīng)變更");

}

}

}

3 手機(jī)定位模塊功能的設(shè)計(jì)

目前有三種常見的手機(jī)定位技術(shù):GPS定位技術(shù)、基站定位技術(shù)和Wi-Fi定位技術(shù)。

GPS定位技術(shù):即衛(wèi)星定位技術(shù)。它基于設(shè)備GPS芯片以及GPS衛(wèi)星來追蹤物體位置,GPS芯片性能及應(yīng)用環(huán)境對(duì)定位精度有較大的影響。而且室內(nèi)無法接收GPS信號(hào),因而無法實(shí)現(xiàn)室內(nèi)定位跟蹤。GPS定位耗電量較大,但是精度較高。內(nèi)置GPS接收器的手機(jī)即使在信號(hào)盲區(qū),也能準(zhǔn)確發(fā)送或接收位置信息。

基站定位技術(shù):基于設(shè)備獲取的基站信息來跟蹤物體的位置。該技術(shù)對(duì)外部運(yùn)行環(huán)境不挑剔,但是基站信號(hào)的覆蓋半徑會(huì)影響定位精度。

Wi-Fi定位技術(shù):定位端只要偵聽附近的Wi-Fi熱點(diǎn),采集每個(gè)熱點(diǎn)信號(hào)的強(qiáng)弱參數(shù)并發(fā)送至服務(wù)器。服務(wù)器基于每個(gè)熱點(diǎn)的參數(shù)查詢與之對(duì)應(yīng)的坐標(biāo)參數(shù),通過運(yùn)算獲取客戶端的位置信息,并將信息輸出至客戶端。Wi-Fi定位不受外部環(huán)境的干擾,因而定位精度較高。

3.1 Android的GPS相關(guān)類 ①Location Manager:提供訪問定位服務(wù)的功能,用于獲取最佳的定位提供者,所有GPS定位相關(guān)的服務(wù)、對(duì)象都將由該對(duì)象來產(chǎn)生。例如獲取最新的位置信息,指定Location Provider的更新周期,獲取設(shè)備位置的變化信息。②Location:它就是一個(gè)代表位置的抽象類,主要提供了經(jīng)緯度、標(biāo)準(zhǔn)時(shí)間、高度、測(cè)量速度、方位角等內(nèi)容。③Location Provider:Android的定位信息由LocationProvider對(duì)象來提供,該對(duì)象代表一個(gè)抽象的定位組件。在開始編程之前,需要首先獲得Location Provider對(duì)象。④Location Listener:當(dāng)設(shè)備的位置信息改變時(shí),該類將進(jìn)行回調(diào)。⑤Criteria:通過設(shè)置它的屬性,Location Provider可以選擇合適的提供者。

這五項(xiàng)相互協(xié)作為應(yīng)用程序提供位置信息服務(wù),它們之間的關(guān)系如圖2所示。

3.2 Android手機(jī)定位代碼的實(shí)現(xiàn) 通過調(diào)用Android的GPS相關(guān)類,把得到的當(dāng)前位置信息保存在SharedPreferences中,這樣就可以隨時(shí)取得手機(jī)的位置了。

void getLocation(){

//得到一個(gè)位置管理器

LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);

//為位置管理器設(shè)置一個(gè)標(biāo)準(zhǔn),該標(biāo)注是代表精確的

Criteria criteria = new Criteria();

criteria.setAccuracy(Criteria.ACCURACY_FINE);

String proveder = lm.getBestProvider(criteria, true);

//設(shè)置一個(gè)位置更新的監(jiān)聽的匿名內(nèi)部類

lm.requestLocationUpdates(proveder, 0, 0, new LocationListener(){

public void onLocationChanged(Location location) {

//獲取經(jīng)度

String longitude = "j:" + location.getLongitude() + "\n";

//獲取緯度

String latitude = "w:" + location.getLatitude() + "\n";

//獲取精確度

String accuracy = "a" + location.getAccuracy() + "\n";

//將經(jīng)度緯度和精確度保存到SharedPreferences并提交

SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);

Editor editor = sp.edit();

editor.putString("lastlocation", longitude + latitude + accuracy);

editor.commit();

}

public void onStatusChanged(String provider, int status, Bundle extras) {};

public void onProviderEnabled(String provider){};

public void onProviderDisabled(String provider){};

);

}

4 軟件的實(shí)際測(cè)試效果

首先在Android手機(jī)安裝了本軟件的測(cè)試版,首先打開本軟件,進(jìn)入到簡(jiǎn)單的歡迎界面;(圖3)

第二步是綁定自己手機(jī)號(hào)碼的SIM卡,即將手機(jī)的串號(hào)綁定進(jìn)去;(圖4)

第三步,也是最為關(guān)鍵的一步,就是要設(shè)置一個(gè)安全號(hào)碼,如果本機(jī)被盜,則對(duì)方在換卡后重啟手機(jī),那么本應(yīng)用會(huì)自動(dòng)向安全號(hào)碼發(fā)送手機(jī)的位置信息;(圖5)

第四步,設(shè)置完成,保持安全號(hào)碼到手機(jī)。(圖6)

完成了上述步驟之后,開始將手機(jī)的SIM卡拆下來,換上一張新的卡,并開機(jī)啟動(dòng)。啟動(dòng)后則手機(jī)將會(huì)觸發(fā)啟動(dòng)的廣播"android.intent.action.BOOT_COMPLETED",手機(jī)應(yīng)用接受到該廣播后將發(fā)送手機(jī)的位置到我們的安全號(hào)碼中。

通過圖7的內(nèi)容,確實(shí)可以看到當(dāng)我們把手機(jī)卡換了之后,手機(jī)會(huì)向原來設(shè)置的安全號(hào)碼發(fā)送了當(dāng)前手機(jī)的位置信息,這樣也驗(yàn)證了本軟件的成功運(yùn)行了。

5 總結(jié)

本文提出并設(shè)計(jì)了一種基于Android智能手機(jī)設(shè)備平臺(tái)下的一種有效的手機(jī)防盜解決方案,采用了JDK+Eclipse+Android SDK+ADT搭建的開發(fā)環(huán)境,并使用了智能手機(jī)的GPS模塊,但該模塊不是必須的,查詢手機(jī)位置也可以通過網(wǎng)絡(luò)來實(shí)現(xiàn)。但在具體開發(fā)過程中,如果沒有一定的編程基礎(chǔ)以及對(duì)Android技術(shù)的了解,著手開發(fā)類似本文功能的手機(jī)防盜功能模塊還是具有一定的難度的。隨著Android技術(shù)的不斷快速發(fā)展,更加強(qiáng)大的手機(jī)防盜功能會(huì)被更容易的開發(fā)出來。

參考文獻(xiàn):

[1]葉達(dá)峰.Eclipse編程技術(shù)與實(shí)例[M].北京:人民郵電出版社,2006:67-68.

[2]王悅,岳瑋寧,王衡,董士海.手持移動(dòng)計(jì)算中的多通道交互[J].軟件學(xué)報(bào),2005(01).

[3]李輝.基于Android平臺(tái)的手機(jī)導(dǎo)航系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 西安電子科技大學(xué),2014.

[4]饒潤(rùn)潤(rùn).基于安卓操作系統(tǒng)的應(yīng)用軟件開發(fā)[D].西安電子科技大學(xué),2014.

[5]閆晉佩,何暉,安文歡,張小輝,任建寶,齊勇.國(guó)內(nèi)第三方Android應(yīng)用市場(chǎng)安全性的檢測(cè)[J].計(jì)算機(jī)科學(xué),2015(12).

[6]熊健.基于Android平臺(tái)的企業(yè)移動(dòng)應(yīng)用開發(fā)框架的分析與設(shè)計(jì)[J].軟件,2012,33(11):44-46.

苍溪县| 凉城县| 南澳县| 乳源| 启东市| 开化县| 高安市| 友谊县| 邢台县| 凤凰县| 正镶白旗| 民和| 宁德市| 曲松县| 浦江县| 旬阳县| 益阳市| 三穗县| 安新县| 图们市| 元谋县| 景泰县| 广昌县| 商城县| 临清市| 上林县| 民县| 达拉特旗| 丰原市| 沾益县| 旺苍县| 海宁市| 奉化市| 高清| 固原市| 桑植县| 视频| 江源县| 泌阳县| 新宁县| 澄江县|