我想知道如何檢測GPS硬件存在於iPhone或不檢測GPS硬件在iphone
回答
儘管您無法使用SDK來確定這一點,但您可能會利用您對當前模型的瞭解。如果您僅限於iPhone 3G,iPhone 3GS和iPod Touch第二代(我不親自支持較舊的iPhone邊緣或iPod Touch第一代),那麼您已經知道iPhone機型配備了真正的AGPS裝置,而iPod Touch 2nd世代可以使用 - 如果可用 - 地理標記的無線熱點。然後,您可以使用以下方法來確定你的模型運行於:
- (NSString *) deviceModel{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *answer = malloc(size);
sysctlbyname("hw.machine", answer, &size, NULL, 0);
NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding];
free(answer);
return results;
}
該方法返回@「iPhone2,1」的3GS,@「iPhone1,2」,爲3G和@「iPod2, 1「爲iPod touch第二代;你叫它如下
NSString *deviceModel = [[self deviceModel] retain];
和按如下方式使用它:
if([self.deviceModel isEqualToString:@"Pod2,1"]){
// no real GPS unit available
// no camera available
...
}
不能檢測硬件,至少不是通過官方SDK。但是,您可以通過與您的應用程序(通過CoreLocation框架)交互(即從中獲取信息)。而且這種方式適用於自iPhone OS 2.0發佈以來發布的所有設備(即使沒有內置真正的GPS也可接觸iPod)。
我找到的最好的是利用一個事實,即CLLocation.verticalAccuracy
只適用於裝有GPS設備的設置。當然,這意味着GPS可用性只能在第一次更新位置後才能確定。
從蘋果公司的文檔:
確定垂直精度 需要與GPS 能力的設備。因此,在某些早期的基於iOS的設備 中,此屬性 始終包含負值。
更新: 有時,核心定位發送CLLocation與verticalAccuracy = -1在iPhone 4對象以及。當沒有GPS定位可用時,Core Location可能會採用小區或Wi-Fi定位。所以你得到-1的事實並不一定意味着你沒有GPS。只有當你獲得肯定的價值時,你纔有GPS。
爲了避免要求GPS權限只是爲了知道GPS是否存在,我使用一個小技巧。由於所有帶有真實GPS的設備都有3G,我只需檢查設備是否有電話接線員。
//Use classLoaders to avoid crashes on iPhone OS 3.x
id netInfo = [[NSClassFromString(@"CTTelephonyNetworkInfo") alloc] init];
if (netInfo)
{
id carrier = [netInfo subscriberCellularProvider];
if ([[carrier carrierName] length] <=0)
{
//NO operator=>NO 3G and no real GPS
}
}
[netInfo release];
當然,這可能不是100%的未來證明,但它在這一點上效果很好。我在我的Battery HD應用程序中使用它以隱藏GPS估計值,所以我顯然不想向用戶詢問授權。
- 1. 可能檢測硬件?
- 2. 檢測硬件耳機機在Mac
- 3. 在.NET中檢測(未知)硬件
- 4. 檢測連接到iPhone的外部硬件
- 5. 如何檢測硬件鍵盤是否連接到iPhone?
- 6. 檢查wheather GPS可用與否在iphone
- 7. Android硬件回聲消除檢測
- 8. 向前兼容的硬件檢測
- 9. 如何檢測iPhone上的硬件鍵盤上的鍵盤事件(iOS)
- 10. iphone檢測委託事件
- 11. 檢測iPhone
- 12. 檢測聲音在iphone
- 13. 在iPhone上檢測長按
- 14. 在iOS中檢測iPhone 3G
- 15. iPhone GPS性能
- 16. iPhone GPS CLLocation鎖?
- 17. 爲iPhone製作硬件
- 18. 編程方式檢測硬件調用的存在/掛斷鍵
- 19. 如何檢測硬件鍵盤的存在?
- 20. Android模擬器無法檢測GPS
- 21. 如何檢測設備中的A-GPS?
- 22. 檢測iphone區域
- 23. Verizon iPhone 4檢測
- 24. iPhone接近檢測
- 25. 有沒有在Android Studio中模擬GPS硬件的方法?
- 26. 檢測硬件組件的斷開/斷開(Windows 7)
- 27. iOS - 如何以編程方式測試iPhone硬件
- 28. 在Javascript中爲iPhone 3GS的設備定位事件測試硬件支持
- 29. 檢測iPhone的條件語句
- 30. iPhone手機通話檢測軟件
carrierName如何短於0? – bk138 2016-03-07 22:02:08