Urban Healthcare System
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,142
On Slideshare
1,142
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
30
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. iPhone – Walkthrough By: Hector M Lugo-Cordero, MS Saad A Khan, MS EEL 6788
  • 2. Agenda
    • History
    • What you will need
    • Model View Controller
    • Objective-C
    • Develop with XCode and Interface Builder
    • Using the Sensors
    • App Examples
    • References
  • 3. History
    • Emerges as a device which provides multimedia, Internet access, and smartphone
    • Collaboration with Cingular Wireless (now AT&T)
  • 4. Releases
    • Time magazine named it the invention of the year in 2007
    • Releases
      • Original: January 9, 2007  Sale: January 29, 2007
      • 3 G: July 11, 2008 (3G speed, assisted GPS)
      • 3GS: June 8, 2009 (video cam and voice control)
  • 5. Availability
  • 6. Units in the world Year Units sold 2007 1,389,000 2008 11,625,000 2009 20,731,000 2010 8,737,000 Total 42,482,000
  • 7. Hardware Item Description Power Original 3.7 V, 1400 mAh 3G: 3.7 V, 1150 mAh 3GS: 3.7 V, 1219 mAh CPU Original & 3G: Samsung 32-bit RISC ARM 1176JZ(F)-S v1.0 620 MHz underclocked to 412 MHz PowerVR MBX Lite 3D GPU 3GS: Samsung S5PC100 ARM Cortex-A8 833 MHz underclocked to 600 MHz PowerVR SGX GPU Storage (Flash) Original: 4, 8, 16 GB 3G: 8, 16 GB 3GS: 16, 32GB
  • 8. Hardware Item Description Memory Original & 3G: 128 MB eDRAM 3GS: 256 MB eDRAM Display 320 × 480 px, 3.5 in (89 mm), 2:3 aspect ratio, 18-bit (262,144-color) LCD with 163 pixels per inch (ppi) Input Multi-touch touchscreen display, headset controls, proximity and ambient light sensors, 3-axis accelerometer 3GS also includes: digital compass Camera Original & 3G: 2.0 megapixels 3GS: 3.0 megapixels with video (VGA at 30 fps)
  • 9. Hardware Item Description Connectivity Wi-Fi (802.11b/g), Bluetooth 2.0+EDR, USB 2.0/Dock connector GSM 3G also includes: A-GPS; HSDPA 3GS also supports: 7.2 Mbps HSDPA Bluetooth 2.1+EDR Dimensions and Weight Original (135 g): 115 mm (4.5 in)  (h) 61 mm (2.4 in)  (w) 11.6 mm (0.46 in)  (d) 3G (133 g) & 3GS (135 g): 115.5 mm (4.55 in)  (h) 62.1 mm (2.44 in)  (w) 12.3 mm (0.48 in)  (d)
  • 10. What you will need
    • MAC computer
    • IPhone SDK
      • Xcode
      • Interface Builder
    • To test
      • Xcode build in simulator
      • IPhone and Apple’s developer license
  • 11. iPhone Developer (Phone ID) In Xcode select: Window > Organizer
  • 12. iPhone Developer (Certificate) Keychain Access (Applications  Utilities) Select 2048 bits and RSA (after continue) Save to disk (remember location)
  • 13. iPhone Developer (Assistant) Login to http://developer.apple.com/iphone , enter developer portal Launch Assistant
  • 14. iPhone Developer (Key Inserts) Identify the app, phone, and enter phone ID (previously acquired with organizer)
  • 15. iPhone Developer(Install Certificate)
    • Generate certificate from file generated by Keychain Access
    • After download the profile and certificate
    • Install on Xcode by dragging it
  • 16. iPhone Developer (Deploy)
    • Select target device
    • Organizer allows to
    • take screen shots
    • Console included
  • 17. iPhone OS
    • OS for iPhone, iPod Touch, and iPad
    • Has a status bar above (signal strength, battery status, time)
    • A dock station is bellow (for main apps)
    • Multitasking is available but only for Apple apps
    • 3 rd party apps are closed when Home button is pressed.
    • Force quit is available (holding power button and then home button)
  • 18. iPhone OS (Layers)
    • Cocoa Touch
      • User interface functionality, buttons,
      • pickers, scroll bars, etc.
      • Wrappers to core services
    • Media
      • Core Audio, audio recording/mixing
      • Open AL, Open GL
      • Video playback
      • PDF, JPG, PNG
  • 19. iPhone OS (Layers)
    • Core Services
      • File Access, Address Book
      • Threading
      • Core Location
      • Net Services, URL Utilities
    • Core OS
      • Security, Sockets
      • Power Management
      • Certificates, File System
  • 20. Model View Controller
  • 21. Model View Controller
    • Main Window:
      • App lives here
      • Not much is done here
    • App Delegate
      • In charge of adding the view and controller to main window
    • App View Controller
      • App Logic: the brains of the application (optional)
      • App View: interface is designed here (GUI available)
  • 22. Objective-C (History)
    • Created early on 1980 by Brad Cox and Tom Love at StepStone
    • In 1986 Steve Jobs left Apple and started NeXT
      • 1988 NeXT licensed Objective-C
    • In 1996 Apple buys NeXT
      • Steve Jobs returns to Apple
      • Mac OS X is born
    • It is object oriented
      • Layer on top of C
  • 23. Objective-C (Syntax)
    • Non object oriented operations identical to C
    • Object oriented follow the Smalltalk syntax
    • Methods are known as selectors
    • Calls are know as message
    • Example
      • C++ call: object->method(arguments)
      • Objective-C message: [object selector: arguments]
  • 24. Objective-C (Dot Syntax)
    • Introduced in Objective-C 2.0
    • Getter
      • int age = [person age];
      • int age = person.age;
    • Setter
      • [person setAge: 25];
      • person.age = 25;
    • Better example
      • [[person child] setAge: 1];  person.child.age = 1;
  • 25. Objective-C (Methods)
    • A dynamic data exists (i.e. id)
    • -(id) selectorName: arg1 label2: arg2 label3: ar3
      • Args are of the form: (type) name
      • - denotes it is an instance method
      • + denotes a class method
    • Selectors are of type SEL
      • Useful to see if a class responds to a method
        • if ([obj respondsToSelector:sel]) {
    • [obj performSelector:sel withObject:self];
    • }
  • 26. Objective-C (cont.)
    • Including/Importing libraries
      • #include: may cause cycles
      • #import: includes the file if it is not already included
    • Memory management (Reference count)
      • Making objects: Removing objects:
      • Retain Release
      • Alloc Autorelease
      • Init Dealloc
      • Copy
  • 27. Objective-C (Autorelease)
    • Perfect for returning variables created at a method
    • Methods that do not use autorelease
      • “ alloc” and “copy”
      • We need to retain these objects
    • All other methods that return an object include autorelease
    • We must follow these conventions
  • 28. Objective-C (Autorelease example)
    • - (NSString *)fullName {
    • NSString *result;
    • result = [[NSString alloc] initWithFormat:@“%@ %@”, firstName, lastName];
    • return result;
    • }
    [result release]; [result autorelease]; Memory leakage Returns nil OK
  • 29. Objective-C (Implementation)
    • Interfaces (protocols)
      • Work the same way that in JAVA
    • Delegates
      • Are like protocols
      • Handle events code
    • Classes
      • .h file (header)
      • .m file (implementation)
  • 30. Objective-C (Properties)
    • Convenient for accessing object attributes
    • Shortcut for getters/setters
    • Allow to specify
      • Access (e.g. read-only)
      • Memory management policy (e.g. retain)
    • atomic vs nonatomic
      • nonatomic provides quicker access to the field
      • atomic is better for when the field will be read/write multiple times (multi threading)
  • 31. Objective-C (Serialization)
    • Known as archiving
    • Done by overriding write: and read: methods
    • Example:
    • (id) write: (TypedStream *) stream {
    • [super write:stream]; objc_write_types(stream, "i", &person.age);
    • return self; }
    • (id) read: (TypedStream *) stream {
    • [super read:stream];
    • objc_read_types(stream, "i", &person.age);
    • return self; }
  • 32. XCode
    • Replaced Project Builder
    • Organizes files
    • Includes an editor
    • Multiple testing targets
    • Useful for iPhone, MAC
    • Red link (app not build)
  • 33. Interface Builder
    • Works in collaboration with XCode
    • Good for developing the App View
    • Need to add keywords to the code
      • IBOutlet translates to nothing
      • IBAction translates to void
    • Organized by category of usage
  • 34. SDK Demo
  • 35. Using the sensors
    • Camera
    • Microphone
    • Proximity
    • Accelerometer
    • Magnetometer
    • GPS
    • Making calls
    • Sending messages
  • 36. Sensors on devices
  • 37. Camera
    • Use UIImagePickerController
    • Implement UIImagePickerControllerDelegate
    • UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    • picker.delegate = pickerDelegate; //can be self
    • picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    • Implement the following method in delegate (called after picture is taken)
    • - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo;
  • 38. Microphone
    • Core Audio library (AVAudioRecorder)
    • NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];
    • NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithFloat: 44100.0], AVSampleRateKey, [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey, [NSNumber numberWithInt: 1], AVNumberOfChannelsKey, [NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey, nil];
    • NSError *error;
    • recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
    • if (recorder) {
    • [recorder prepareToRecord];
    • recorder.meteringEnabled = YES;
    • [recorder record]; }
    • else NSLog([error description]);
  • 39. Proximity
    • Turn them on
    • UIDevice *device = [UIDevice currentDevice];
    • device.proximityMonitoringEnabled = YES;
    • BOOL state = device.proximityState;
    • Set notifications
    • [[NSNotificationCenter defaultCenter] addObserver: self
    • selector: @selector(proximityChanged:)
    • name: @"UIDeviceProximityStateDidChangeNotification"
    • object: device]; …
    • - (void) proximityChanged: (NSNotification *)note {
    • UIDevice *device = [note object];
    • NSLog(@"In proximity: %i", device.proximityState);
    • }
  • 40. Accelerometer
    • Range is [-0.5, 0.5]
    • Declare a class
    • Start accelerometer
    • Take measurements
  • 41. Accelerometer (cont.)
    • @interface AccelController: UIViewController<UIAccelerometerDelegate> {
    • UIAccelerometer *accelerometer;
    • }
    • @end
    • //start
    • - (void)viewDidLoad {
    • accelerometer = [UIAccelerometer sharedAccelerometer];
    • accelerometer.updateInterval = 0.1;
    • accelerometer.delegate = self;
    • [super viewDidLoad];
    • }
  • 42. Accelerometer (cont.)
    • - (void)accelerometer:(UIAccelerometer *)meter
    • didAccelerate:(UIAcceleration *)acceleration {
    • float x = acceleration.x;
    • float y = acceleration.y;
    • float z = acceleration.z;
    • float angle = atan2(y, x);
    • ...
    • }
  • 43. Magnetometer
    • Core location, but available only for 3GS
    • LocationManager = [[CLLocationManager alloc] init];
    • locationManager.delegate = self;
    • if( locationManager.locationServicesEnabled &&
    • locationManager.headingAvailable) {
    • [locationManager startUpdatingLocation];
    • [locationManager startUpdatingHeading];
    • } else {
    • ...
    • }
  • 44. Magnetometer (Delegate)
    • - (void)locationManager:(CLLocationManager *) manager
    • didUpdateHeading:(CLHeading *) newHeading {
    • if (newHeading.headingAccuracy > 0) {
    • CLLocationDirection theHeading =
    • newHeading.magneticHeading;
    • ...
    • }
    • }
    • //to show calibration panel
    • -(BOOL)locationManagerShouldDisplayHeadingCalibration:
    • (CLLocationManager *)manager {
    • return YES;
    • }
  • 45. GPS
    • Core location
    • locationManager = [[CLLocationManager alloc] init];
    • locationManager.delegate = self;
    • if( locationManager.locationServicesEnabled ) {
    • [locationManager startUpdatingLocation];
    • } else {
    • ...}
    • locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
  • 46. GPS (Delegate methods)
    • - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation: (CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
    • if( newLocation != oldLocation ) {…}
    • }
    • - (void)locationManager:(CLLocationManager *)manager didFailWithError: (NSError *)error {…}
  • 47. Making calls, Emails, and SMS
    • Calls, emails, and SMS are treated like URL services (UIApplication.sharedApplication)
    • [[UIApplication sharedApplication] openURL:
    • [NSURL URLWithString:@&quot;tel://123-456-7890&quot;]];
    • [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@&quot;mailto:emailAdress?subject=testMail&body=its test mail.&quot;]];
    • [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@&quot;sms:111&quot;]];
  • 48. App Examples
    • Battery monitor
    • LocateMe
    • WhichWayIsUp
    • Accerlerometer
  • 49. References
    • http://developer.apple.com/iphone
    • http://www.learningiphoneprogramming.com/
    • http://mobiforge.com/developing/story/deploying-iphone-apps-real-devices
    • http://www.wikipedia.org
  • 50. Questions