m (→Default capabilities of various devices: Update for 4.0.) |
|||
Line 43: | Line 43: | ||
} | } | ||
</source> | </source> | ||
This shared memory is constructed by the [[SBPlatformController]] class in {{applink|SpringBoard}}. | |||
== Default capabilities of various devices == | == Default capabilities of various devices == |
Revision as of 19:38, 18 April 2010
GSCapability is a group of C functions that checks the capability of the device. A capability can be a simple boolean value, e.g. whether the device can take pictures, to a complex structure e.g. the screen dimensions.
Example code
if (GSSystemHasCapability(kGSMagnetometerCapability)) {
direction = get_direction();
} else {
printf("This device has no compass\n");
}
Extracting the capability dictionary
The capabilities are stored as a plist in a shared memory region named "GSCapabilities". You can use this code to extract it:
#include <sys/mman.h>
#include <sys/stat.h>
#include <CoreFoundation/CoreFoundation.h>
static CFDictionaryRef GSCopyCapababilities(void) {
int shm = shm_open("GSCapabilities", 0);
assert(shm != -1);
struct stat shm_stat;
int fstat_ret = fstat(shm, &shm_stat);
assert(fstat_ret == 0);
void* map = mmap(NULL, shm_stat.st_size, 1, 1, shm, 0);
assert(map >= 0);
CFIndex len = *(CFIndex*)map;
CFDataRef data = CFDataCreateWithBytesNoCopy(NULL, (const UInt8*)map + sizeof(len), len, kCFAllocatorNull);
assert(data != NULL);
CFPropertyListRef propList = CFPropertyListCreateFromXMLData(NULL, data, kCFPropertyListImmutable, NULL);
CFRelease(data);
munmap(map, len);
close(shm);
return propList;
}
This shared memory is constructed by the SBPlatformController class in SpringBoard.
Default capabilities of various devices
Capabilities | N45AP (iPod Touch 1G) |
M68AP (iPhone 2G) |
---|---|---|
kGSTelephonyCapability "telephony" |
No | Yes |
kGSCellularDataCapability "cellular-data" |
No | Unknown |
kGSSMSCapability "sms" |
No | Yes |
kGSCameraCapability "still-camera" |
No | Yes |
kGSVideoCameraCapability "video-camera" |
No | No |
kGSAutoFocusCameraCapability "auto-focus-camera" |
No | No |
kGSH264EncoderCapability "h264-encoder" |
No | No |
kGSWiFiCapability "wifi" |
Yes | Yes |
kGSAccelerometerCapability "accelerometer" |
Yes | Yes |
kGSMagnetometerCapability "magnetometer" |
No | No |
kGSGPSCapability "gps" |
No | Yes |
kGSLocationServicesCapability "location-services" |
Yes | Yes |
kGSMicrophoneCapability "microphone" |
No | Yes |
kGSPeer2PeerCapability "peer-peer" |
No | Unknown |
kGSOpenGLES1Capability "opengles-1" |
Yes | Yes |
kGSOpenGLES2Capability "opengles-2" |
No | No |
kGSARMV6ExecutionCapability "armv6" |
Yes | Yes |
kGSARMV7ExecutionCapability "armv7" |
No | No |
kGSDisplayPortCapability "display-port" |
No | Unknown |
kGSContainsCellularRadioCapability "contains-cellular-radio" |
No | Unknown |
kGSVolumeButtonCapability "volume-buttons" |
No | Yes |
kGSRingerSwitchCapability "ringer-switch" |
No | Yes |
kGSPiezoClickerCapability "piezo-clicker" |
Yes | No |
kGSBluetoothCapability "bluetooth" |
No | Yes |
kGSUnifiedIPodCapability "unified-ipod" |
No | Yes |
kGSYouTubeCapability "youtube" |
Yes | Yes |
kGSYouTubePluginCapability "youtubePlugin" |
Yes | Yes |
kGSGreenTeaDeviceCapability[1] "green-tea" |
No | No |
kGSNotGreenTeaDeviceCapability[1] "not-green-tea" |
Yes | Yes |
kGSInternationalSettingsCapability "international-settings" |
Yes | Yes |
kGSPlatformStandAloneContactsCapability "stand-alone-contacts" |
Yes | Yes |
kGSDelaySleepForHeadsetClickCapability "delay-sleep-for-headset-click" |
No | Unknown |
kGSLaunchApplicationsWhileAnimatingCapability "launch-applications-while-animating" |
No | Unknown |
kGSLoadThumbnailsWhileScrollingCapability "load-thumbnails-while-scrolling" |
No | Unknown |
kGSSensitiveUICapability "sensitive-ui" |
No | Unknown |
kGSAppleInternalInstallCapability "apple-internal-install" |
No | No |
kGSHasAllFeaturesCapability "all-features" |
Yes | Yes |
kGSNikeIpodCapability "nike-ipod" |
No | No |
kGSApplicationInstallationCapability "applicationInstallation" |
Yes | Yes |
kGSVoiceControlCapability "voice-control" |
No | No |
kGSProximitySensorCapability "proximity-sensor" |
No | Yes |
kGSGasGaugeBatteryCapability[2] "gas-gauge-battery" |
No | Unknown |
kGSAccessibilityCapability "accessibility" |
No | No |
kGSMMSCapability "mms" |
No | No |
kGSEncryptedDataPartitionCapability "encrypted-data-partition" |
No | Unknown |
kGSEncodeAACCapability "encode-aac" |
No | Unknown |
kGS720pPlaybackCapability "720p" |
No | No |
kGSDisplayFCCLogosViaSoftwareCapability "fcc-logos-via-software" |
No | Unknown |
kGSHideNonDefaultApplicationsCapability "hide-non-default-apps" |
No | Unknown |
kGSWildcatCapability[3] "wildcat" |
No | No |
kGSDataPlanCapability "data-plan" |
No | Unknown |
kGSCameraFlashCapability "camera-flash" |
No | Unknown |
kGSCanRasterizeEfficientlyCapability "can-rasterize-efficiently" |
Unknown | Unknown |
kGSFrontFacingCameraCapability "front-facing-camera" |
No | No |
kGSHiDPICapability "horiz" |
Unknown | Unknown |
kGSIOSurfaceBackedImagesCapability "io-surface-backed-images" |
Unknown | Unknown |
kGSMultitaskingCapability "multitasking" |
No | No |
kGSVeniceCapability "venice" |
Unknown | Unknown |
kGSTelephonyMaximumGeneration "telephony-maximum-generation" |
0 | 2.5 |
kGSDeviceNameString "device-name" |
iPod | iPhone |
kGSMarketingNameString "marketing-name" |
iPod Touch | iPhone |
kGSScreenDimensionsCapability[4] "screen-dimensions" |
320 × 480 | 320 × 480 |
References
- ↑ 1.0 1.1 "Green-Tea" is a code name for devices sold in China. Green-Tea devices have restricted access to various applications e.g. Maps.
- ↑ Gas-gauge capability allows accurate monitoring of the battery level
- ↑ "Wildcat" is the codename of iPad.
- ↑ This capability is a dictionary with 4 members. Only width and height are shown here.