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

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

Жанры

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

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

Кодекс Крови. Книга VIII

Борзых М.
8. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VIII

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

Грехов Тимофей
3. Гримуар темного лорда
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Гримуар темного лорда III

Алхимик

Джеймс Питер
Top Thriller
Детективы:
триллеры
8.32
рейтинг книги
Алхимик

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

Грехов Тимофей
8. Гримуар темного лорда
Фантастика:
боевая фантастика
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Гримуар темного лорда VIII

Сильнейший Столп Империи. Книга 5

Ермоленков Алексей
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 5

Встреча

Видум Инди
7. Петя и Валерон
Фантастика:
рпг
аниме
попаданцы
5.00
рейтинг книги
Встреча

Я еще граф. Книга #8

Дрейк Сириус
8. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Я еще граф. Книга #8

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Изгой

Майерс Александр
2. Династия
Фантастика:
фэнтези
попаданцы
рпг
аниме
5.00
рейтинг книги
Изгой

Викинг

Мазин Александр Владимирович
1. Викинг
Приключения:
исторические приключения
8.92
рейтинг книги
Викинг

Страх

Рыбаков Анатолий Наумович
2. Дети Арбата
Проза:
историческая проза
9.49
рейтинг книги
Страх

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

Грехов Тимофей
5. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда V

Товарищ "Чума" 7

lanpirot
7. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ Чума 7

Падение Софии (русский роман)

Хаецкая Елена Владимировна
Фантастика:
фэнтези
5.00
рейтинг книги
Падение Софии (русский роман)