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