Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

Если в вашем приложении недостаточно просто определить, какая камера имеется на устройстве, можно получить и другие настройки, воспользовавшись классом UIImagePickerController. Одна из этих настроек позволяет узнать, есть ли на камере данного устройства функция вспышки. Метод класса isFlashAvailableForCameraDevice:, относящийся к классу UIImagePickerController, применяется, чтобы выяснить, на какой камере доступна функция вспышки — передней или задней. Не забывайте также, что метод класса isFlashAvailableForCameraDevice:, относящийся к классу UIImagePickerController, сначала проверяет доступность запрошенной камеры, а

уже потом проверяется доступность функции вспышки на этой камере. Поэтому методы, которые мы здесь реализуем, можно будет запускать и на устройствах, лишенных передней или задней камеры, без необходимости предварительной проверки доступности камеры:

— (BOOL) isFlashAvailableOnFrontCamera{

return [UIImagePickerController isFlashAvailableForCameraDevice:

UIImagePickerControllerCameraDeviceFront];

}

— (BOOL) isFlashAvailableOnRearCamera{

return [UIImagePickerController isFlashAvailableForCameraDevice:

UIImagePickerControllerCameraDeviceRear];

}

Теперь, если воспользоваться всеми методами, написанными в этом разделе, и протестировать их, например, в делегате нашего приложения, мы сможем увидеть результаты на различных устройствах:

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

if ([self isFrontCameraAvailable]){

NSLog(@"The front camera is available.");

if ([self isFlashAvailableOnFrontCamera]){

NSLog(@"The front camera is equipped with a flash");

} else {

NSLog(@"The front camera is not equipped with a flash");

}

} else {

NSLog(@"The front camera is not available.");

}

if ([self isRearCameraAvailable]){

NSLog(@"The rear camera is available.");

if ([self isFlashAvailableOnRearCamera]){

NSLog(@"The rear camera is equipped with a flash");

} else {

NSLog(@"The rear camera is not equipped with a flash");

}

} else {

NSLog(@"The rear camera is not available.");

}

if ([self doesCameraSupportTakingPhotos]){

NSLog(@"The camera supports taking photos.");

} else {

NSLog(@"The camera does not support taking photos");

}

if ([self doesCameraSupportShootingVideos]){

NSLog(@"The camera supports shooting videos.");

} else {

NSLog(@"The camera does not support shooting videos.");

}

self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Вот

результаты запуска данного приложения на новом iPhone:

The front camera is available. // передняя камера доступна

The front camera is not equipped with a flash // передняя камера

// не оснащена функцией вспышки

The rear camera is available. // задняя камера доступна

The rear camera is equipped with a flash // задняя камера оснащена

, // функцией вспышки

The camera supports taking photos. // камера позволяет делать

, // фотоснимки

The camera supports shooting videos. // камера позволяет

// записывать видео

Вот вывод того же кода при запуске на симуляторе iPhone:

The front camera is not available. // передняя камера недоступна

The rear camera is not available. // задняя камера недоступна

The camera does not support taking photos // камера не поддерживает съемку фотографий

The camera does not support shooting videos // камера не поддерживает съемку видео

13.2. Фотографирование с помощью камеры

Постановка задачи

Требуется попросить пользователя сделать снимок (фотография выполняется камерой устройства). После того как пользователь сделает снимок, необходимо получить доступ к этой фотографии.

Решение

Инстанцируйте объект типа UIImagePickerController и представьте его пользователю как модальный вид в актуальном контроллере вида. Вот объявление этого контроллера вида:

#import «ViewController.h»

#import <MobileCoreServices/MobileCoreServices.h>

@interface ViewController <UIImagePickerControllerDelegate,

UINavigationControllerDelegate>

@end

Поделиться:
Популярные книги

Период распада

Афанасьев Александр
Фантастика:
боевая фантастика
5.00
рейтинг книги
Период распада

Мы живые

Рэнд Айн
Проза:
классическая проза
8.33
рейтинг книги
Мы живые

Гримуар темного лорда IV

Грехов Тимофей
4. Гримуар темного лорда
Фантастика:
фэнтези
боевая фантастика
попаданцы
аниме
6.00
рейтинг книги
Гримуар темного лорда IV

Путь, исполненный отваги. Задолго до Истмата

Беразинский Дмитрий Вячеславович
Фантастика:
научная фантастика
7.62
рейтинг книги
Путь, исполненный отваги. Задолго до Истмата

Слово авторитета

Сухов Евгений Евгеньевич
Я – вор в законе
Детективы:
боевики
7.77
рейтинг книги
Слово авторитета

Кодекс Охотника. Книга XVIII

Винокуров Юрий
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга XVIII

Конго

Крайтон Майкл
Фантастика:
научная фантастика
7.50
рейтинг книги
Конго

Экстр

Зинделл Дэвид
3. Реквием по Homo Sapiens
Фантастика:
научная фантастика
6.25
рейтинг книги
Экстр

Андер Арес

Грехов Тимофей
1. Андер Арес
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Андер Арес

Рабы Парижа

Габорио Эмиль
Детективы:
прочие детективы
5.00
рейтинг книги
Рабы Парижа

Парижский вариант

Линдз Гейл
3. Прикрытие-Один
Детективы:
триллеры
5.00
рейтинг книги
Парижский вариант

Поезд смерти (Сборник)

Бирн Роберт
Мастера остросюжетного романа
Детективы:
техно триллер
6.25
рейтинг книги
Поезд смерти (Сборник)

Пилот штрафной эскадрильи

Корчевский Юрий Григорьевич
Фантастика:
альтернативная история
5.79
рейтинг книги
Пилот штрафной эскадрильи

Ледяной Сфинкс

Верн Жюль
Приключения:
прочие приключения
путешествия и география
5.00
рейтинг книги
Ледяной Сфинкс