? ? ? ? 最近公司要做停車(chē)自動(dòng)標(biāo)記車(chē)輛位置的功能,這是室內(nèi)定位反向?qū)ぼ?chē)系統(tǒng)的前提條件,也是室內(nèi)定位技術(shù)剛需!
解決思路:
? ? ? ? 剛開(kāi)始想到該技術(shù)通過(guò)傳感器中加速度計(jì)、計(jì)步器等數(shù)據(jù),通過(guò)一系列算法計(jì)算分辨出,“人行”/“車(chē)行”。從而通過(guò)時(shí)間戳對(duì)照到GPS定位點(diǎn),從而做到標(biāo)記車(chē)輛位置到地圖上!
? ? ? ? 經(jīng)過(guò)測(cè)試iPhone 計(jì)步器和加速度計(jì),發(fā)現(xiàn)當(dāng)用戶(hù)把手機(jī)鎖屏或者APP掛起狀態(tài)時(shí)候,計(jì)步器和加速度計(jì),GPS都不會(huì)在后臺(tái)發(fā)送數(shù)據(jù),(因?yàn)橐ㄟ^(guò)收集數(shù)據(jù)才能分析處理,所以?huà)炱馉顟B(tài)不發(fā)送數(shù)據(jù)從而不能從這思路解決問(wèn)題)通過(guò)查閱資料,發(fā)現(xiàn)GPS定位服務(wù)可以在后臺(tái)一直處于運(yùn)行狀態(tài),以下是解決辦法:
1、 首先把定位服務(wù)的后臺(tái)啟動(dòng)模式打開(kāi) 如圖 1

2、設(shè)置CLLocationManager的屬性,如圖2。 ? ??
?提示: ?1)2)3)4)一步不能少,少了APP就不能在后臺(tái)一直運(yùn)行了。
? 1) 定位管理者需要一直請(qǐng)求定位服務(wù),requestAlwaysAuthorization;
? 2)需要允許后臺(tái)更新數(shù)據(jù)更新,setAllowBackgroundLocationUpdates;
? 3) ?設(shè)置不允許暫停自動(dòng)刷新數(shù)據(jù)功能,pusesLocationUpdatesAutomatically = NO;
? 4)設(shè)置定位更新的最小距離為空,kCLDistanceFilterNone;

然后經(jīng)過(guò)測(cè)試,定位服務(wù)和計(jì)步器、傳感器都能在掛起狀態(tài)不能被KILL掉。
注意: 之前沒(méi)有設(shè)置2的 ?3) 4)的時(shí)候,APP有時(shí)候會(huì)在16分鐘,18分鐘,20分鐘左右不發(fā)送用戶(hù)位置,和計(jì)步器、傳感器數(shù)據(jù)。一定要把3)4)設(shè)置正確。