新聞中心
只需要進(jìn)行一些簡(jiǎn)單的設(shè)置,你的應(yīng)用程序就可以接受位置更新,在這次教程里你將詳細(xì)的學(xué)習(xí)這些步驟,讓你掌握Android位置管理器的使用方法。

成都創(chuàng)新互聯(lián)是專(zhuān)業(yè)的嶧城網(wǎng)站建設(shè)公司,嶧城接單;提供做網(wǎng)站、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行嶧城網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
一、在Manifest里聲明合適的權(quán)限
要想獲取位置更新,***步需要在manifest里聲明合適的權(quán)限。如果忘了聲明相應(yīng)的權(quán)限,那么你的應(yīng)用在運(yùn)行時(shí)會(huì)報(bào)安全異常。當(dāng)你使用LocationManagement方法的時(shí)候,需要設(shè)置權(quán)限ACCESS_CORASE_LOCATION或者 ACCESS_FINE_LOCATION,例如,如果你的應(yīng)用使用了基于網(wǎng)絡(luò)的信息服務(wù),你需要聲明N ACCESS_CORASE_LOATION權(quán)限,要想獲取GPS請(qǐng)求你需要聲明ACCESS_FINE_LOCATION權(quán)限。值得注意的是如果你聲明了ACCESS_FINE_LOCATION權(quán)限隱含著你也聲明了ACCESS_CORASE_LOCATION權(quán)限。 假如一個(gè)應(yīng)用使用了基于網(wǎng)絡(luò)的位置的信息服務(wù),你需要聲明因特網(wǎng)權(quán)限。
二、獲得一個(gè)位置管理的引用
LocationManager是一個(gè)主類(lèi),在android里你通過(guò)這個(gè)類(lèi)你可以使位置服務(wù)。使用方法類(lèi)似于其他的服務(wù),通過(guò)調(diào)用 getSystemService方法可以獲得相應(yīng)的引用。如果你的應(yīng)用想要在前臺(tái)(在Activity里)獲得位置更新,你應(yīng)該在onCreate() 里執(zhí)行以下語(yǔ)句。
- LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
三、挑選一個(gè)位置提供者
當(dāng)沒(méi)有請(qǐng)求的時(shí)候,現(xiàn)在大部分android電源管理可以通過(guò)多種底層技術(shù)可以獲得位置更新,這種技術(shù)被抽象為L(zhǎng)ocationProvider類(lèi)的應(yīng) 用。在時(shí)間、精度、成本、電源消耗等方面,位置提供者有不同的運(yùn)行特性。通常,像GPS,一個(gè)精確的位置提供者,需要更長(zhǎng)的修正時(shí)間,而不是不精確,比如 基于網(wǎng)絡(luò)的位置提供者。 通過(guò)權(quán)衡之后你必須選擇一種特殊的位置提供者,或者多重提供者,這些都依賴(lài)與你的應(yīng)用的客戶(hù)需求。例如,比如說(shuō)一個(gè)關(guān)鍵點(diǎn)的簽到服務(wù),需要高精度定位,而 一個(gè)零售商店定位器使用城市級(jí)別的修正就可以滿(mǎn)足。下面的代碼段要求一個(gè)GPS提供者的支持。
- LocationProvider provider = locationManager.getProvider(LocationManager.GPS_PROVIDER);
你提供一些輸入標(biāo)準(zhǔn),比如精度、功率需求、成本等等,讓android決定一個(gè)最合適的位置匹配提供者。下邊的代碼片段需要的是更精確的位置提供者而不是 考慮成本。需要注意的是這個(gè)標(biāo)準(zhǔn)不能幫你解決任何的提供者,可能返回值為空。這個(gè)時(shí)候你的應(yīng)用應(yīng)該能夠很好的處理這種情況
- // Retrieve a list of location providers that have fine accuracy, no monetary cost, etc
- Criteria criteria = new Criteria();
- criteria.setAccuracy(Criteria.ACCURACY_FINE);
- criteria.setCostAllowed(false);
- ...
- String providerName = locManager.getBestProvider(criteria, true);
- // If no suitable provider is found, null is returned.
- if (providerName != null) {
- ...
- }
四、檢查位置提供者是否使能
在設(shè)置里,一些位置提供者比如GPS可以被關(guān)閉。良好的做法就是通過(guò)調(diào)用isProviderEnabled()方法來(lái)檢測(cè)你想要的位置提供者是否打開(kāi)。如果位置提供者被關(guān)閉了,你可以在設(shè)置里通過(guò)啟動(dòng)Intent來(lái)讓用戶(hù)打開(kāi)。
- @Override
- protected void onStart() {
- super.onStart();
- // This verification should be done during onStart() because the system calls
- // this method when the user returns to the activity, which ensures the desired
- // location provider is enabled each time the activity resumes from the stopped state.
- LocationManager locationManager =
- (LocationManager) getSystemService(Context.LOCATION_SERVICE);
- final boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
- if (!gpsEnabled) {
- // Build an alert dialog here that requests that the user enable
- // the location services, then when the user clicks the "OK" button,
- // call enableLocationSettings()
- }
- }
- private void enableLocationSettings() {
- Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
- startActivity(settingsIntent);
- }
希望本文讓讀者朋友們對(duì)學(xué)習(xí)Android位置管理器一定的幫助和啟發(fā)。
新聞標(biāo)題:Android使用位置管理器
標(biāo)題鏈接:http://www.dlmjj.cn/article/djdesie.html


咨詢(xún)
建站咨詢(xún)
