有了智能手機以后,想要定位導航就容易多了,但是如果碰上路癡還是有可能會(huì )把自己搞丟,就算能用手機定位,不會(huì )看地圖也搞不懂自己究竟在哪。
這款APP的名字很直白,直接就叫《位置地址顯示》,可以幫用戶(hù)獲得自己當前的詳細位置、地址,如果到了陌生的地方找不到路,又沒(méi)法向朋友描述的時(shí)候可以直接通過(guò)它來(lái)獲取地址,然后還能通過(guò)多種形式將位置發(fā)送給朋友。它有多種定位方式,首先會(huì )通過(guò)gps定位,如果沒(méi)有信號的話(huà)會(huì )再通過(guò)WIFI信號定位,如果依然沒(méi)有信號,會(huì )按你最后一次定位的位置顯示地址。打開(kāi)APP后它會(huì )自動(dòng)開(kāi)始定位。定位成功以后會(huì )在上方顯示經(jīng)緯度,點(diǎn)擊一下就可以進(jìn)入短信界面,在其中可以通過(guò)短信或者Line來(lái)發(fā)送信息。
點(diǎn)擊菜單鍵以后還可以切換多種地圖形式,可以用衛星模式、混合模式等方式查看所在地,甚至還可以查看當前地區的天氣情況。如果是支持谷歌街景的地區,還可以直接查看自己附近的街景。
一旦你的Android手機丟失,千萬(wàn)不要慌張。目前的Android手機都具有定位功能,這個(gè)定位是指通過(guò)手機本身的GPS或移動(dòng)網(wǎng)絡(luò )進(jìn)行定位,如果你不能確定你手機中的這項功能是否啟用的話(huà),不妨實(shí)際操作試試吧,或許會(huì )有驚喜。下面就給大家分享一下Android手機如何利用自身的設備管理器功能進(jìn)行定位。
Android系統自帶的定位功能此方法試用于安裝有完整谷歌服務(wù)框架的Android手機,部分國行手機可能無(wú)法正常使用。
谷歌自帶了數據備份、定位、防盜(響鈴、鎖定、清空)等功能,使用該服務(wù),需要在手機上安裝谷歌服務(wù)框架(在應用市場(chǎng)搜索即可),并登錄谷歌賬號。
在谷歌服務(wù)應用中找到“Google設置”這個(gè)應用,選擇里面的“Android設備管理器”,選中“遠程定位此設備”和“允許遠程回復出廠(chǎng)設置”。
手機一旦丟失,打開(kāi)Android設備管理器網(wǎng)頁(yè)
可以看到白色方框右上角的“定位”,以及下方的“響鈴”“鎖定和清空”功能,點(diǎn)擊相應按鈕即可執行相應操作。
手機發(fā)生對應反應的前提是能夠通過(guò)Wi-Fi或移動(dòng)數據連接正常上網(wǎng),因此,如果手機離線(xiàn),相關(guān)操作將會(huì )在手機上線(xiàn)后繼續執行。
點(diǎn)擊響鈴,手機會(huì )以最大鈴聲持續響5分鐘。不過(guò)用戶(hù)點(diǎn)擊電源鍵可關(guān)閉,這個(gè)設計著(zhù)實(shí)無(wú)語(yǔ),應該強制響鈴才對呀!
使用了Android設備管理器的遠程鎖定功能,它將覆蓋你手機中所有已經(jīng)存在的密碼,讓小偷無(wú)法進(jìn)入系統。
清空選項則會(huì )將手機的聯(lián)系人等信息刪除,避免隱私的泄露。
由于國行手機大部分都沒(méi)有配備谷歌的相關(guān)服務(wù),所以上述的定位功能不一定適用于所有的Android手機。但也別就此放棄希望,如果你的手機平時(shí)有安裝的有例如《LBE安全大師》或《騰訊手機管家》這類(lèi)安全軟件,說(shuō)不定也有找回的機會(huì )。
LBE安全大師
使用之前要確定你的《LBE安全大師》已經(jīng)開(kāi)啟了防盜功能。
如果你已經(jīng)開(kāi)啟了防盜功能,你的安全手機會(huì )收到一份防盜指令的短信。用戶(hù)可以通過(guò)向丟失手機發(fā)送短信指令,完成數據銷(xiāo)毀、數據備份、手機鎖定、手機定位等功能。
銷(xiāo)毀數據:xiaohui%防盜密碼
鎖定手機:suoding%防盜密碼
定位手機:dingwei%防盜密碼
響鈴報警:baojing%防盜密碼
備份信息:beifen%防盜密碼
虛擬警告:jinggao%防盜密碼#警告信息
找回密碼:huodemima
找回密碼指令必須用安全手機發(fā)送。
需要注意的是,至少需要移動(dòng)網(wǎng)絡(luò )或Wi-Fi網(wǎng)絡(luò )中的一項網(wǎng)絡(luò )鏈接,并且遺失的手機保持開(kāi)機和SIM卡正常服務(wù)狀態(tài)下,才能完成定位。當執行備份、定位等操作時(shí),軟件會(huì )自動(dòng)打開(kāi)網(wǎng)絡(luò )連接和GPS定位。
1.得到系統定位服務(wù)
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
2.加載定位監聽(tīng)
lm.(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
System.out.println(location.getLatitude() + " " + location.getLongitude());
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
};
3.得到最近一次監聽(tīng)地址
Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
loc.getLatitude();
loc.getLongitude();
貧窮人士表示沒(méi)有安卓手機 不能測試下了 大概的流程記得是這樣
使用百度地圖 Android SDK定位吧.其實(shí)室內的話(huà)呢,一般就是wifi定位為主啦.public class HouseKeeperSearch extends Activity {private MapView mMapView;private MapController mMapController = null;// 定位相關(guān)private LocationClient mLocClient;private LocationData locData = null;public MyLocationListener myListener = new MyLocationListener();boolean isFirstLoc = true;// 是否首次定位private MyLocationOverlay myLocationOverlay = null; // 定點(diǎn)標志private BMapManager mBMapMan = null;private ProgressDialog pd;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBMapMan = new BMapManager(getApplication()); mBMapMan.init("", null); pd = new ProgressDialog(this); pd.setIndeterminate(true); pd.setMessage(getString(R.string.loading_location)); pd.setCancelable(true); pd.show(); setContentView(R.layout.activity_housekeeper_search); initMap();}private void initMap() { // 地圖初始化 mMapView = (MapView) findViewById(R.id.map_view); mMapController = mMapView.getController(); mMapView.getController().setZoom(16); mMapView.getController().enableClick(true); mMapView.(true); // 定位初始化 mLocClient = new LocationClient(this); locData = new LocationData(); mLocClient.(myListener); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true);// 打開(kāi)gps option.setCoorType("bd09ll"); // 設置坐標類(lèi)型 option.setScanSpan(1000); mLocClient.setLocOption(option); mLocClient.start(); //啟動(dòng) // 定位圖層初始化 myLocationOverlay = new MyLocationOverlay(mMapView); // 設置定位數據 myLocationOverlay.setMarker(getResources().getDrawable( R.drawable.location)); // 添加定位圖層 mMapView.getOverlays().add(myLocationOverlay); myLocationOverlay.enableCompass(); // 修改定位數據后刷新圖層生效 mMapView.refresh(); //加載}/** * 定位SDK監聽(tīng)函數 */public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { if (location == null) return; locData.latitude = location.getLatitude(); locData.longitude = location.getLongitude(); // 如果不顯示定位精度圈,將accuracy賦值為0即可 locData.accuracy = location.getRadius(); // 此處可以設置 locData的方向信息, 如果定位 SDK 未返回方向信息,用戶(hù)可以自己實(shí)現羅盤(pán)功能添加方向信息。
locData.direction = location.getDerect(); myLocationOverlay.setData(locData); // 更新圖層數據執行刷新后生效 mMapView.refresh(); // 是手動(dòng)觸發(fā)請求或首次定位時(shí),移動(dòng)到定位點(diǎn) if (isFirstLoc) { // 移動(dòng)地圖到定位點(diǎn) Log.d("LocationOverlay", "receive location, animate to it"); mMapController.animateTo(new GeoPoint( (int) (locData.latitude * 1e6), (int) (locData.longitude * 1e6))); if (pd.isShowing()) pd.dismiss(); } // 首次定位完成 isFirstLoc = false; } public void onReceivePoi(BDLocation poiLocation) { if (poiLocation == null) { return; } }}@Overrideprotected void onPause() { mMapView.onPause(); if (mBMapMan != null) { mBMapMan.stop(); } super.onPause();}@Overrideprotected void onResume() { mMapView.onResume(); if (mBMapMan != null) { mBMapMan.start(); } super.onResume();}@Overrideprotected void onDestroy() { // 退出時(shí)銷(xiāo)毀定位 if (mLocClient != null) mLocClient.stop(); mMapView.destroy(); if (mBMapMan != null) { mBMapMan.destroy(); mBMapMan = null; } super.onDestroy();}@Overrideprotected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mMapView.onSaveInstanceState(outState);}@Overrideprotected void (Bundle savedInstanceState) { super.(savedInstanceState); mMapView.(savedInstanceState);}。
安卓平臺實(shí)現定位步驟、方法如下: 1.三個(gè)接口: GpsStatus.Listener: 這是一個(gè)當GPS狀態(tài)發(fā)生改變時(shí),用來(lái)接收通知的接口。 GpsStatus.NmeaListener: 這是一個(gè)用來(lái)從GPS里接收Nmea-0183(為海用電子設備制定的標準格式)信息的接口。 LocationListener: 位置監聽(tīng)器,用于接收當位置信息發(fā)生改變時(shí)從LocationManager接收通知的接口。 2.八個(gè)類(lèi): Address: 描述地址的類(lèi) Criteria: 用于描述Location Provider標準的類(lèi),標準包括位置精度水平,電量消耗水平,是否獲取海拔、方位信息,是否允許接收付費服務(wù)。 GeoCoder: 用于處理地理位置。 GpsSatellite: 和GpsStatus聯(lián)合使用,用于描述當前GPS衛星的狀態(tài)。 GpsStatus: 和GpsStatus.Listener聯(lián)合使用,用于描述當前GPS衛。
GeoCoder.Listener聯(lián)合使用。
GpsStatus: 通過(guò)此類(lèi)獲取和調用系統位置服務(wù)
LocationProvider: 用于處理地理位置.NmeaListener: 這是一個(gè)當GPS狀態(tài)發(fā)生改變時(shí)。
Location: 這是一個(gè)用來(lái)從GPS里接收Nmea-0183(為海用電子設備制定的標準格式)信息的接口,標準包括位置精度水平,用于描述當前GPS衛星的狀態(tài): 用于描述Location Provider的抽象超類(lèi),電量消耗水平: 用于描述Location Provider標準的類(lèi):
GpsStatus,用于描述當前GPS衛星的狀態(tài)安卓平臺實(shí)現定位步驟,是否允許接收付費服務(wù).八個(gè)類(lèi)。
LocationManager,用于接收當位置信息發(fā)生改變時(shí)從LocationManager接收通知的接口,謝謝、方位信息。
GpsSatellite、方法如下:
LocationListener,是否獲取海拔.三個(gè)接口.Listener:
Address: 和GpsStatus,用來(lái)接收通知的接口。
GpsStatus。
2: 用于描述位置信息。
: 描述地址的類(lèi)
Criteria: 和GpsStatus聯(lián)合使用: 位置監聽(tīng)器
國內應用最好還是用百度定位,如果只是單純的小應用測試玩玩的,百度申請個(gè)免費的apikey就可以使用,但是如果這個(gè)應用是需要發(fā)布的,還是花錢(qián)申請個(gè)apikey,因為免費的apikey是有使用次數限制的。
GPS定位一般不做考慮的,只有在室外才能使用,室內GPS無(wú)法使用。
國內很多定制機都是閹割google地圖的,甚至有的手機根本不支持常規的基站定位,所以做國內應用的話(huà),需要將所有的都考慮進(jìn)去,包括google包不能使用(酷派手機不支持google地圖包,應用都裝不進(jìn)去的)、常規定位不支持等都需要在程序里面判斷清楚。
三種方式進(jìn)行定位,獲取用戶(hù)位置,分別是基于基站定位, 網(wǎng)絡(luò )定位,GPS定位。
1.基站定位(passive):這是基于網(wǎng)絡(luò )基站進(jìn)行定位的,定位的精確度在幾十米到幾千米不等,在城市中基站覆蓋率比較高,推薦使用基站定位,如果是在郊區,基站相距較遠,基站的覆蓋沒(méi)有城里好,定位的誤差比較大。如果在郊區不推薦使用基站定位。
2.網(wǎng)絡(luò )定位:wifi定位,網(wǎng)絡(luò )定位3.GPS定位:與衛星進(jìn)行通信。手機中嵌入了GPS模塊(精簡(jiǎn)版的A-GPS),通過(guò)A-GPS搜索衛星, 獲取經(jīng)緯度。
使用GPS的弊端是:必須站在空曠的地方,頭頂對著(zhù)天空,如果云層厚了,也會(huì )受到一定的影響。精確度:10-50米擴展知識:使用Android是定位必備的權限: //精確定位 //模擬器 //粗糙定位//獲取定位管理對象LocationManager lm=(LocationManager)getSystemService(LOCATION_SERVICE);String[] names=lm.getAllProviders();//獲取所有的位置提供者,一般三種Criteria criteria=new Criteria();//查詢(xún)條件,如果設置了海拔,則定位方式只能是GPS;criteria.setCostAllowed(true);//是否產(chǎn)生開(kāi)銷(xiāo),比如流量費String provider=lm.getBaseProvider(criteria,true)//獲取最好的位置提供者,第二個(gè)參數為true,表示只獲取那些被打開(kāi)的位置提供者lm.(provier,0,0,new LocationListener(){});//獲取位置。
第二個(gè)參數表示每隔多少時(shí)間返回一次數據,第三個(gè)參數表示被定位的物體移動(dòng)每次多少米返回一次數據。private class MyLocationListener implements LocationListener { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override@Override public void onLocationChanged(Location location) { System. out.println( "服務(wù)中位置監聽(tīng)發(fā)送了變化了" ); float accuracy = location.getAccuracy(); // 精確度 double altitude = location.getAltitude(); // 海拔 double latitude = location.getLatitude(); // 緯度 double longitude = location.getLongitude(); // 經(jīng)度 String locationInfo = "jingdu:" + longitude + ",weidu:" + latitude + ",haiba:" + altitude + ",jingquedu:" + accuracy; Editor edit = sp.edit(); edit.putString( "location", locationInfo); edit.commit(); } } public void onProviderDisabled(String provider) { }。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:2.679秒