Курсы по мобильной разработке под iOS. 4 лекция....
description
Transcript of Курсы по мобильной разработке под iOS. 4 лекция....
![Page 1: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/1.jpg)
Возможности телефона
Разработка под iOS
Лекция 4
Глеб Тарасов
![Page 2: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/2.jpg)
Интернет
![Page 3: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/3.jpg)
Reachabilityhttp://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html
![Page 4: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/4.jpg)
Есть ли интернет?
Reachability *r = [Reachability reachabilityForInternetConnection];
if (r.status != NotReachable){ NSLog(@"Есть интернет");}
![Page 5: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/5.jpg)
WiFi или 3G
Reachability *r = [Reachability reachabilityForLocalWiFi];if (r.status != NotReachable){ NSLog(@"Есть wifi");}
![Page 6: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/6.jpg)
Акселерометр,гироскоп
![Page 7: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/7.jpg)
Ориентация
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsPortrait(orientation)) NSLog(@"portrait");else NSLog(@"landscape");
typedef enum { UIInterfaceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight} UIInterfaceOrientation;
![Page 8: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/8.jpg)
- (void)viewDidLoad{ [super viewDidLoad]; [[UIAccelerometer sharedAccelerometer] setDelegate:self]; [[UIAccelerometer sharedAccelerometer] setUpdateInterval:0.01];}
@interface MyViewController : UIViewController<UIAccelerometerDelegate>
#pragma mark - UIAccelerometerDelegate
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{ NSLog(@"%g %g %g", acceleration.x, acceleration.y, acceleration.z);}
Акселерометр
![Page 9: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/9.jpg)
Когда телефон лежит на столе:x = 0y = 0z = -1
ускорение +1.0g вдоль этой оси
1.0 по оси
![Page 10: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/10.jpg)
Фильтр нижних частот
http://developer.apple.com/library/ios/#samplecode/AccelerometerGraph/Introduction/Intro.html
http://ru.wikipedia.org/wiki/Фильтр_нижних_частот
![Page 11: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/11.jpg)
Гироскоп
![Page 12: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/12.jpg)
- (void)viewDidLoad { [super viewDidLoad];) motionManager = [[CMMotionManager alloc] init];
timer = [NSTimer scheduledTimerWithTimeInterval:1/30.0 target:self selector:@selector(doGyroUpdate) userInfo:nil repeats:YES];}
- (void)doGyroUpdate { CMRotationRate rate = motionManager.gyroData.rotationRate;) NSLog(@"%g %g %g", rate.x, rate.y, rate.z); }
![Page 13: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/13.jpg)
Геолокация
![Page 14: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/14.jpg)
manager = [[CLLocationManager alloc] init];manager.delegate = self;manager.desiredAccuracy = kCLLocationAccuracyHundredMeters;[manager startUpdatingLocation];
@interface Locator : NSObject<CLLocationManagerDelegate>
- (void)locationManager:(CLLocationManager *)m) didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { CLLocationCoordinate2D coord = newLocation.coordinate; NSLog(@"%g %g", coord.latitude, coord.longitude);}
Координаты
![Page 15: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/15.jpg)
Компас
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { NSLog(@"%g", newHeading.magneticHeading);}
locationManager = [[CLLocationManager alloc] init]; locationManager.desiredAccuracy = kCLLocationAccuracyBest; [locationManager setDelegate:self]; [locationManager startUpdatingHeading];
![Page 16: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/16.jpg)
Работа с микрофоном
![Page 17: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/17.jpg)
http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html
SpeakHere
![Page 18: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/18.jpg)
Воспроизведение аудио
![Page 19: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/19.jpg)
AVAudioPlayer
NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"mp3"];NSURL *url = [NSURL fileURLWithPath:path];AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];[player play];
![Page 20: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/20.jpg)
![Page 21: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/21.jpg)
- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent { if (receivedEvent.type == UIEventTypeRemoteControl) { switch (receivedEvent.subtype) { case UIEventSubtypeRemoteControlTogglePlayPause: [self playPause]; break; case UIEventSubtypeRemoteControlPreviousTrack: [self rewind]; break; case UIEventSubtypeRemoteControlNextTrack: [self forward]; break; default: break; } }}
- (void) viewDidAppear:(BOOL)animated{ [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; [self becomeFirstResponder];}
![Page 22: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/22.jpg)
Воспроизведение видео
![Page 23: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/23.jpg)
NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"mp4"];NSURL *url = [NSURL fileURLWithPath:path];
MPMoviePlayerViewController *c = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[self presentModalViewController:c animated:YES];
MPMoviePlayerViewController
![Page 24: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/24.jpg)
Фото и видео
![Page 25: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/25.jpg)
Видео с камеры
UIImagePickerController *c = [[UIImagePickerController alloc] init];c.delegate = self;c.sourceType = UIImagePickerControllerSourceTypeCamera;c.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
[self presentModalViewController:c animated:YES];
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
[picker dismissModalViewControllerAnimated:YES];}
![Page 26: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/26.jpg)
![Page 27: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/27.jpg)
Фото из альбомов
UIImagePickerController *c = [[UIImagePickerController alloc] init];c.delegate = self;c.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ NSURL *url = [info objectForKey:UIImagePickerControllerMediaURL]; }
![Page 28: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/28.jpg)
![Page 29: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/29.jpg)
Что писать?
![Page 30: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/30.jpg)
Top 25 paid
19 игр
2 книги
1 мессенджер
3 утилиты
Top 25 free
17 игр
3 утилиты
3 развлекательныхпрограммы
1 мессенджер
1 соц. сеть
![Page 31: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/31.jpg)
Education
![Page 32: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/32.jpg)
![Page 33: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/33.jpg)
![Page 34: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/34.jpg)
Entertainment
![Page 35: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/35.jpg)
![Page 36: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/36.jpg)
![Page 37: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/37.jpg)
Photo & Video
![Page 38: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/38.jpg)
![Page 39: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/39.jpg)
![Page 40: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/40.jpg)
Navigation
![Page 41: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/41.jpg)
![Page 42: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/42.jpg)
![Page 43: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/43.jpg)
Games
![Page 44: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/44.jpg)
![Page 45: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/45.jpg)
![Page 46: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/46.jpg)
![Page 47: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/47.jpg)
![Page 48: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/48.jpg)
Варианты приложений
![Page 49: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/49.jpg)
Задачи
Решение задач (вроде diofant.ru)
Задания ЕГЭ
![Page 50: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/50.jpg)
ПониматикаДетские развивающие приложения
Найди спрятанные объекты
Соедини линии по числам и получи объект
Комиксы
Раскраска
![Page 51: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона](https://reader033.fdocuments.net/reader033/viewer/2022050920/54b758734a79594f0d8b456f/html5/thumbnails/51.jpg)
Сервисы
ТВ-программа