Touch scale co через айфон

Скачать бесплатно Touch Scale для Apple iPhone OS

Платформы: iPhone, iPod Touch, Apple iPhone OS

Категории: Бизнес & Профессия

Дата загрузки: 3 Дек 11

Разработчик: Jaja & Co

Тип распространения: бесплатная

Рейтинг: 2.5/5 (Всего голосов: 17)

Источник

Умное приложение позволяет взвешивать вещи на iPhone 6s

Компания Apple разработала технологию 3D Touch для более чувствительного взаимодействия телефона с владельцем. Однако при этом на презентации iPhone 6s и iPhone 6s Plus не было сказано ни слова о возможности взвешивать различные объекты прямо на экране смартфона.

Можно было бы подумать, что это невозможно, если бы не нашелся хитрый и весьма умный разработчик. Он обошел все правила, установленные Apple, и создал программу, которая способна заставить телефон работать в режиме весов. Автор назвал приложение TouchScale.co. По его словам, оно делает свою работу с удивительной точностью.

Уникальная разработка

Ашер Трокмен – собственно, автор новинки, нашел путь создания программы после тщательного исследования функции 3D Touch, которой оснащены последние модели iPhone. Так как смартфон успешно определяет давление, оказанное на его дисплей, то идея с созданием «яблочных» весов оказалась вправе претендовать на жизнь.

При разработке приложения Трокмен сумел сделать так, чтобы смартфон не просто был способен обнаружить присутствие какого-либо объекта, а еще и оперировал конкретными числами. В итоге получилась рабочая программа, подсчитывающая вес оказываемого давления и даже сохраняющая все подробности измерений в своей базе данных. Кроме того, после использования TouchScale.co вы можете зайти на собственный блог, где будет подробно расписана дополнительная информация, касающаяся результатов.

Правила использования

Если вы хотите использовать весы, то достаточно лишь открыть ссылку, являющуюся названием приложения, через Safari. Скачивать программу не нужно – достаточно лишь написать в поисковой строке браузера «TouchScale.co» через iPhone. После загрузки веб-страницы умное приложение будет готово к использованию. Вы сможете сразу же приступить к работе с ним. Разместите выбранные объекты прямо на дисплее телефона, и индикатор должен будет показать их вес.

Небольшие «но»

Все звучит достаточно радужно и немного фантастически, правда? Возможно, просто стоит немного опустить вас с небес, представив некоторые оговорки в работе приложения.

IPhone способен подсчитать вес только тех объектов, которые будут обнаружены с помощью емкостного сенсорного экрана. Поэтому к ним подойдут не слишком крупные, но достаточно большие для распознавания предметы. Например, можно успешно взвешивать фрукты и овощи. Также стоит учесть, что вещь должна соприкасаться с экраном только в одной точке. Это может быть неудобно для взвешивания фруктов ассиметричной формы.

Естественно, предмет не должен закрывать весь дисплей, иначе вы просто не увидите результаты измерений. Кроме того, его следует положить в специально отведенную зону, которая указывается на экране.

Желательно использовать смартфон вместо весов только в том случае, если вам не нужны крайне точные результаты. В противном случае вы можете допустить ошибку в расчетах. Как видно на фото, IPhone дает погрешность в 1-2 грамма по сравнению с настоящими весами.

Источник

3DTouch – Весы на iPhone: Начало

После выхода на рынок iPhone 6s и iPhone 6s Plus с экранами, которые поддерживают технологию 3D Touch, в App Store практически сразу появилось приложение для взвешивая слив и персиков.

Не могу с уверенностью сказать почему именно этих фруктов, но могу сказать однозначно почему именно фруктов. Дело в том, что сенсор экрана iPhone работает по принципу определения утечки тока с поверхности сенсора, а для этой самой утечки нужен живой палец либо что-то, что обладает электрической емкостью. Думаю, каждый знает, что на пластиковые стилус или ноготь экраны i-девайсов не срабатывают. Именно поэтому взвесить на том приложении что-то металлическое не получалось. Но фрукты имеют электрическую емкость, на них срабатывает сенсор и нормально срабатывает непосредственно 3D Touch.

Очень быстро это приложение было удалено из App Store. Лично мне кажется, что это было сделано из-за недалеких пользователей, которые попытались взвесить на своих устройствах пудовые гири. Разумеется, устройства сломались и они их понесли в сервисные центры. А там они сказали что-то из серии: «Приложение скачано из официального магазина, и там не предупреждали, что нельзя…».

В итоге, подобных приложений нет в магазине, но никто нам не помешает создать его для себя.

Задача

Нам нужно написать приложение, которое состоит из одного контроллера, на котором будут приглашающая надпись, нарисованный круг в центре экрана, индикаторы веса в граммах и процентов от определяемой силы (дальше по тексту будет понятнее). При нажатии на экран в месте касания будет появляться круг, который будет увеличиваться или уменьшаться в зависимости от силы нажатия. Сразу нужно сказать, что на симуляторе подобное приложение протестировать не получится. Поэтому нужно будет запускать приложение на реальном устройстве. По окончанию должно получиться вот такое приложение:

Создание проекта

Октройте XCode, выберите создание нового проекта, шаблон Single View Application

Построение интерфейса в Xcode

Перейдите в Storyboard, перетащите из библиотеки элементов на контроллер несколько UILabel, разместите их ближе к верхнему или нижнему краев контроллера. У меня получилось так:

Для эстетической привлекательности место куда будем класть предметы мы выделим красной окружностью. Можно взять уже готовую картинку с кругом, но это же не наш метод)). Круги мы нарисуем методами Core Graphics. Удобнее будет создать класс-наследник от UIView и уже с ним работать.

Добавьте в проект новый файл, назовите его ScaleView. Создайте в этом файле класс ScaleView который наследуется от UIView.

Далее перейдите в StoryBoard, перенесите на контроллер из библиотеки элементов UIView и расположите его в центре нашего контроллера. Выберите только что добавленный UIView и в Identity Inspector задайте класс ScaleView, который мы создали ранее.

Также с помощью констрейнтов можно задать правила взаимного расположения элементов на экране. У меня это выглядит вот так:

Рисуем круги

Перейдите в файл ScaleView.swift. В классе ScaleView мы создали метод draw(_ rect:), который мы будем использовать для рисования внутри области отображения этого UIView.

Добавьте следующий код в метод draw(_ rect:)

  1. Получаем графический контекст, в котором мы буде рисовать
  2. Задаем цвет, которым будем рисовать. В данном случае. — это красный цвет
  3. Устанавливаем ширину линии, которой будем рисовать.
  4. Задаем путь для рисования в виде дуги, центр которой расположен в центре ScaleView, радиусом равным половине ширины ScaleView минус 14 ( это чтобы вписать дугу в видимую область View), и длинной дуги — по всей окружности в 360 градусов. Прошу учесть, что мои цифры ширины жестко заданы в предыдущем пункте с помощью констрейнтов.
  5. Рисуем по заданному пути заданными параметрами

Можно скомпилировать для проверки, однако также можно задать директиву для отображения изменений прямо в Interface Builder.

Вся магия в директиве @IBDesignable. Отметьте этой директивой класс ScaleView

После этого перейдите в StoryBoard, немного подождите и вы увидите нарисованную красную окружность в центре ViewController

Давайте потренируемся и нарисуем еще один круг поменьше и потоньше. Для этого в файле ScaleView в метод draw(_ rect:) добавьте следующий код:

Думаю, понятно и так что мы добавили. По сути мы добавили еще одну окружность, серого цвета, радиусов в четверть ширины ScaleView и шириной в одну точку.

Результаты в StoryBoard:

Финалом наших подготовительных работ будет создание аутлетов для ScaleView и двух UILabel, который буду показывать силу нажатия на экран в процентах и вес в граммах. Ctrl-перетасктвние элементов из ViewController создаст нужные аутлеты.

Непосредственно — весы

Итак, мы вплотную подошли к моменту измерения силы нажатия на экран. Перейдите во ViewController и в методе viewDidLoad() добавьте стартовые значения для всех UILabel

Как и все процессы, связанные с нажатиями на экран, в контроллере их можно отловить в методе touchesMoved(_::). Данный метод срабатывает когда касания экрана происходят во времени. Т.е. Если палец стоит на экране или движется по нему срабатывает этот метод и можно отследить все касания и их свойства. Добавьте его во ViewController и напишите следующий код:

Вся механика iOS приложения Весы заключается в этом методе. Все остальное, что мы будем делать дальше в этом уроке — это доработки. Всю основную работу мы уже сделали. Давайте разбирать по пунктам

  1. Из всего множества касаний экрана выберем первое
  2. Данная директива проверяет установленную операционную систему на устройстве и пропускает далее только если версия операционной системы 9.0 и более. Работа с 3D Touch стала возможной только с 9-ой версии iOS. Пытаться его обработать в боль ранних версиях не имеет смысла
  3. А в этой строке идет проверка устройства на поддержку экрана с функцией 3D Touch. Ведь iOS версии 10 может стоять и на iPhone 6, но от этого экран этого смартфона не начнет различать силу нажатия. Данную проверку необходимо проводить по строгому требованию Apple
  4. У касания есть свойство force в которе передается сила нажатия каждый раз, как срабатывает метод touchesMoved(_::). И в этой строке мы сравниваем значение текущей силы нажатия и максимально возможного значения силы нажатия. И если сила нажатия больше максимальной, то в наши UILabel мы передаем максимальные значения, а именно — 100 % силы и 385 грамм. Тут следует отметить почему именно 385 грамм. Дело в том, что технология 3D Touch сделана именно так, что 100% силы нажатия соответствуют 385-ти граммам. Соответственно получай процент силы нажатия мы можем легко вычислить вес в граммах.
  5. Вот тут эти вычисления и делаем. В этой строке вычисляем процент силы нажатия
  6. Тут вычислим вес в граммах, исходя из формулы 100% = 385 грамм
  7. Это простое округление граммов до целого
  8. Передаем значения процента силы и веса в граммах в наши UILabel

Прежде чем запускать и проверять приложение нужно добавьте еще один метод, который срабатывает в момент, когда все касания на экран прекращаются touchesEnded(::), для того чтобы задать начальное положение наших UILabel и передать в них значения 0% и 0 грамм. Добавьте этот метод в класс ViewController.

Теперь можно компилировать приложение и проверять. Разумеется это нужно делать на реальном устройстве, чтобы увидеть результат. Симулятор не способен эмулировать силовые нажатия на экран.

Доработки

Основной функционал готов, но я при написании этого приложение решил добавить три вещи:

  1. При достижении максимального значения я хочу чтобы срабатывал виброотклик
  2. Обновление значений в UILabel происходят очень быстро, (я думаю вы это заметили при тестировании) поэтому нужно добавить некую плавность.
  3. В месте нажатия должен появляться полупрозрачный круг. Его диаметр должен увеличиваться по мере увеличения силы нажатия и уменьшаться по мере уменьшения силы нажатия

Этими дополнениями мы займемся в следующей статье 🙂

Источник

Читайте также:  Безотрывная клавиатура для айфон
Оцените статью
Поиск по устройству
Мое устройство
Поиск по категориям
Базы данных
Бизнес & Профессия
Здоровье & Медицина
Игры
Интернет & Коммуникации
Мультимедиа & Графика
Наука & Образование
Программирование & Разработка
Словари & Переводчики
Темы & Обои & Скины
Туризм & Навигация
Управление задачами и временем
Утилиты
Финансы
Хобби & Развлечения
Чтение
Поиск по платформе
Android
Apple iPhone OS
iPad
iPhone
iPod Touch
BlackBerry
Java
Linux
Maemo Nokia Internet Tablet
MeeGO
Sharp Zaurus
Mobile Gaming
Nintendo DS
Playstation 3
Playstation Portable
Wii
Xbox 360
Palm OS
Symbian OS
Series 60
Series 80
Series 90
UIQ
Tablet PC
Windows CE.NET
Windows Mobile Pocket PC
Windows Mobile Smartphone