Курсы по мобильной разработке под ios. 4 лекция....

51
Возможности телефона Разработка под iOS Лекция 4 Глеб Тарасов

Upload: -

Post on 15-Jan-2015

1.440 views

Category:

Education


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Возможности телефона

Разработка под iOS

Лекция 4

Глеб Тарасов

Page 2: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Интернет

Page 4: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Есть ли интернет?

Reachability *r = [Reachability reachabilityForInternetConnection];

if (r.status != NotReachable){ NSLog(@"Есть интернет");}

Page 5: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

WiFi или 3G

Reachability *r = [Reachability reachabilityForLocalWiFi];if (r.status != NotReachable){ NSLog(@"Есть wifi");}

Page 6: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Акселерометр,гироскоп

Page 7: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Ориентация

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;

if (UIInterfaceOrientationIsPortrait(orientation)) NSLog(@"portrait");else NSLog(@"landscape");

typedef enum { UIInterfaceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight} UIInterfaceOrientation;

Page 8: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

- (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 лекция. Возможности телефона

Когда телефон лежит на столе:x = 0y = 0z = -1

ускорение +1.0g вдоль этой оси

1.0 по оси

Page 10: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Фильтр нижних частот

http://developer.apple.com/library/ios/#samplecode/AccelerometerGraph/Introduction/Intro.html

http://ru.wikipedia.org/wiki/Фильтр_нижних_частот

Page 11: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Гироскоп

Page 12: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

- (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 лекция. Возможности телефона

Геолокация

Page 14: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

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 лекция. Возможности телефона

Компас

- (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 лекция. Возможности телефона

Работа с микрофоном

Page 17: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html

SpeakHere

Page 18: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Воспроизведение аудио

Page 19: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

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 лекция. Возможности телефона
Page 21: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

- (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 лекция. Возможности телефона

Воспроизведение видео

Page 23: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

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 лекция. Возможности телефона

Фото и видео

Page 25: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Видео с камеры

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 лекция. Возможности телефона
Page 27: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Фото из альбомов

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 лекция. Возможности телефона
Page 29: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Что писать?

Page 30: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Top 25 paid

19 игр

2 книги

1 мессенджер

3 утилиты

Top 25 free

17 игр

3 утилиты

3 развлекательныхпрограммы

1 мессенджер

1 соц. сеть

Page 31: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Education

Page 32: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 33: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 34: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Entertainment

Page 35: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 36: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 37: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Photo & Video

Page 38: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 39: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 40: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Navigation

Page 41: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 42: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 43: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Games

Page 44: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 45: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 46: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 47: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона
Page 48: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Варианты приложений

Page 49: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Задачи

Решение задач (вроде diofant.ru)

Задания ЕГЭ

Page 50: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

ПониматикаДетские развивающие приложения

Найди спрятанные объекты

Соедини линии по числам и получи объект

Комиксы

Раскраска

Page 51: Курсы по мобильной разработке под iOS. 4 лекция. Возможности телефона

Сервисы

ТВ-программа