#import <Foundation/Foundation.h>
#import <sys/utsname.h>
enum {
MODEL_IPHONE_SIMULATOR,
MODEL_IPOD_TOUCH,
MODEL_IPHONE,
MODEL_IPHONE_3G,
MODEL_IPAD
};
@interface DeviceDetection : NSObject
+ (uint) detectDevice;
+ (NSString *) returnDeviceName:(BOOL)ignoreSimulator;
+ (BOOL) isIPodTouch;
@end
#import "DeviceDetection.h"
@implementation DeviceDetection
+ (BOOL) isIPodTouch
{
int model = [DeviceDetection detectDevice];
if (model == MODEL_IPOD_TOUCH || model == MODEL_IPAD){
//|| model == MODEL_IPHONE_SIMULATOR){
return YES;
}
else {
return NO;
}
}
+ (uint) detectDevice {
NSString *model= [[UIDevice currentDevice] model];
// Some iPod Touch return "iPod Touch", others just "iPod"
NSString *iPodTouch = @"iPod Touch";
NSString *iPodTouchLowerCase = @"iPod touch";
NSString *iPodTouchShort = @"iPod";
NSString *iPad = @"iPad";
NSString *iPhoneSimulator = @"iPhone Simulator";
uint detected;
if ([model compare:iPhoneSimulator] == NSOrderedSame) {
// iPhone simulator
detected = MODEL_IPHONE_SIMULATOR;
}
else if ([model compare:iPad] == NSOrderedSame) {
// iPad
detected = MODEL_IPAD;
} else if ([model compare:iPodTouch] == NSOrderedSame) {
// iPod Touch
detected = MODEL_IPOD_TOUCH;
} else if ([model compare:iPodTouchLowerCase] == NSOrderedSame) {
// iPod Touch
detected = MODEL_IPOD_TOUCH;
} else if ([model compare:iPodTouchShort] == NSOrderedSame) {
// iPod Touch
detected = MODEL_IPOD_TOUCH;
} else {
// Could be an iPhone V1 or iPhone 3G (model should be "iPhone")
struct utsname u;
// u.machine could be "i386" for the simulator, "iPod1,1" on iPod Touch, "iPhone1,1" on iPhone V1 & "iPhone1,2" on iPhone3G
uname(&u);
if (!strcmp(u.machine, "iPhone1,1")) {
detected = MODEL_IPHONE;
} else {
detected = MODEL_IPHONE_3G;
}
}
return detected;
}
+ (NSString *) returnDeviceName:(BOOL)ignoreSimulator {
NSString *returnValue = @"Unknown";
switch ([DeviceDetection detectDevice]) {
case MODEL_IPHONE_SIMULATOR:
if (ignoreSimulator) {
returnValue = @"iPhone 3G";
} else {
returnValue = @"iPhone Simulator";
}
break;
case MODEL_IPOD_TOUCH:
returnValue = @"iPod Touch";
break;
case MODEL_IPHONE:
returnValue = @"iPhone";
break;
case MODEL_IPHONE_3G:
returnValue = @"iPhone 3G";
break;
default:
break;
}
return returnValue;
}
@end
分享到:
相关推荐
iPhone/ipod touch/ipad文件传输工具 ifunBox_sc中文版(数据线版)支持 iFunBox:PC 端程序,简单、高效,只需要 iTunes 环境支持,数据线传输,速度一般 10MB/S i-FunBox v0.99版本, 更新信息: 1. 传输文件到...
treemapkit, Cocoa Touch for ( iphone/ipod touch/ipad ) TreemapKitTreemapKit是 Cocoa Touch的treemap实现。 你可以在 iPhone,iPod touch和iPad中显示 TreeMaps 。点击这里看一下简单的演示软件。 许可证...
iPhone/iPad 绘图应用 Brushes ,Brushes 是一个绘图应用,支持 iPhone, iPod touch 和 iPad。
完全针对 iPad、iPhone 和 iPod touch 构建,使创建包含动画图表和过渡效果的世界一流水平演示文稿变得如此简单,只需触摸和轻按即可。使用全屏幕视图在 iPad、iPhone 或 iPod touch 上演示。或者使用视频镜像在 HDTV ...
【内容提要】本书深入探讨了基于iOS的游戏设计、游戏开发根据相关的各类处理方案,并对颇具技巧的难点内容进行深入讨论。... iOS游戏开发 基于iPad,iPhone和iPod Touch. 北京:清华大学出版社, 2015.05.
"(0108)-iOS/iPhone/iPad/iPod源代码-日历(Calendar)-Popover Calendar" 提供了一个实现这一功能的源代码示例。这个项目不仅适用于iPhone,也适用于iPad和iPod touch设备,展示了如何利用CoreGraphics框架来...
在iOS开发中,地图应用是常见且重要的功能之一,尤其是对于iPhone、iPad和iPod Touch等设备。本项目“(0051)-iOS/iPhone/iPAD/iPod源代码-地图(Map)-Customized Callout MKAnnotation”专注于自定义地图标注...
完全针对 iPad、iPhone 和 iPod touch 构建,使创建包含动画图表和过渡效果的世界一流水平演示文稿变得如此简单,只需触摸和轻按即可。使用全屏幕视图在 iPad、iPhone 或 iPod touch 上演示。或者使用视频镜像在 HDTV ...
完全针对 iPad、iPhone 和 iPod touch 构建,使创建包含动画图表和过渡效果的世界一流水平演示文稿变得如此简单,只需触摸和轻按即可。使用全屏幕视图在 iPad、iPhone 或 iPod touch 上演示。或者使用视频镜像在 HDTV ...
标题中的“iPhone iPod touch4 iPad2 连接管理器”指的是一个软件工具,它允许用户通过计算机对这些苹果设备(iPhone、iPod touch 4代和iPad 2)的内部文件系统进行管理和操作,类似于Windows操作系统中的“资源管理...
《iOS/iPhone/IPAD/iPod源代码解析——增强现实(AR)与Camera Gun应用》 在移动设备领域,iOS平台提供了丰富的开发工具和技术,使得开发者能够创造出各种创新的应用。本篇我们将聚焦于一个名为"Camera Gun"的项目...
这个压缩包文件"(0049)-iOS/iPhone/iPAD/iPod源代码-网页(Webview)-Web View Controller"包含了一个实现网页浏览功能的示例项目,适用于iPhone、iPad以及iPod touch设备。在Mac环境下解压后,开发者可以深入...
本资源"(0014)-iOS/iPhone/iPAD/iPod源代码-其他(Others)-Star Rating View"提供了一种实现此类功能的方法。下面我们将详细探讨相关的知识点。 1. 自定义视图(Custom View): 在iOS开发中,我们经常需要...
在本主题"(0004)-iOS/iPhone/iPad/iPod源代码-按钮(Button)-Reload Activity Button"中,我们将深入探讨如何实现一个具有特定交互效果的“reload”按钮,即在点击后展示reloading动画,并添加光照效果。...
在本资源"(0095)-iOS/iPhone/iPAD/iPod源代码-弹出视图(Popup View)-Hidden Option Panel"中,开发者提供了一种实现这一功能的方法。 首先,让我们深入理解核心概念: 1. **Panel(面板)**:在iOS中,...
在iOS平台上,为iPhone、iPad或iPod Touch开发应用程序时,有时我们需要实现一种类似于文件夹层级的导航方式,让用户能够方便地浏览和管理文件。这种交互设计被称为“Accordion file navigation”,即手风琴式文件...
本教程主要聚焦于如何在iPhone、iPad或iPod touch的应用中自定义UITabBar,以实现更加个性化的交互效果。我们将探讨以下几个关键知识点: 1. **自定义Tab Bar的文字**: - `UITabBarItem`是用于表示Tab Bar中每个...
完全针对 iPad、iPhone 和 iPod touch 构建,它可让您仅用手指就可以在几分钟内制作出带有表格、图表、照片和图形的吸引人的电子表格。有超过 250 种易于使用的函数可供选择。使用滑块、步进器、弹出式菜单和智能键盘...
本文将深入探讨如何在iPhone、iPad或iPod Touch应用中创建一个具有圆形设计并显示动态进度条的按钮,即"Round Progress Button"。这个特性常见于音乐播放应用,如iTunes,它在用户预览歌曲时展示当前的播放进度。 ...