Принципы разработки ПО для iPhone с использованием акселерометра
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Принципы разработки ПО для iPhone с использованием акселерометра

  • 2,206 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,206
On Slideshare
1,840
From Embeds
366
Number of Embeds
6

Actions

Shares
Downloads
6
Comments
0
Likes
0

Embeds 366

http://www.iphonedev.com.ua 302
http://iphonedevcamp.com.ua 44
http://feeds2.feedburner.com 10
http://www.slideshare.net 8
http://webcache.googleusercontent.com 1
http://feeds.feedburner.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Краковецкий Александр MCP, Разработчик программного обеспечения ИВП «ИнноВинн», Украина Alex.Krakovetskiy@innovinn.com http://iphoner.org.ua/blogs/akrakovetsky
  • 2. Что такое акселерометр и как он работает? Примеры использования Работа с координатами Подключение акселерометра в проект Программы AccelerometerGraph и iBells Использование акселерометр в веб- приложениях Акселерометр и симулятор Вопросы и ответы
  • 3. “Акселерометр — прибор, измеряющий проекцию кажущегося ускорения, что есть равнодействующая сил не гравитационной природы, действующая на массу и отнесѐнная к величине этой массы.” Википедия
  • 4. Общий пример iBeer iBoobs
  • 5. Датчик ускорения внутри iPhone использует три элемента: кремниевое тело, набор кремниевых пружин и электрический ток. Кремниевые пружины определяют положение кремниевого тела с помощью электрического тока. При повороте iPhone возникает колебание электрического тока, проходящего по кремниевым пружинам. Датчик ускорения фиксирует эти колебания и сообщает iPhone.
  • 6. является частью UIKit фреймворка предоставляет информацию по трем осям можно настроить частоту обновления данных (приблизительно 10-100 Гц) Классы: UIAccelerometer UIAcceleration Протокол: UIAccelerometerDelegate
  • 7. координата X (Roll) показывает информацию о повороте устройства влево или вправо; координата Y (Pitch) дает нам следующую информацию: iPhone находится в вертикальном положении (- 1), лежит в горизонтальной плоскости (0) или находится в вертикальном положении, только вверх ногами (+1);
  • 8. координата Y (Face up/face down) показывает, в каком положении находится устройство: лицом вверх (-1, при нулевых значениях по другим осям), в вертикальном положении (0) или лицом вниз (+1).
  • 9. В методе applicationDidFinishLaunching: #define kUpdateFrequency 60.0 [[UIAccelerometer sharedAccelerometer] setUpdateInterval: 1.0/ kUpdateFrequency]; [[UIAccelerometer sharedAccelerometer] setDelegate:self];
  • 10. В заголовочном файле вместо @interface AppDelegate : NSObject<UIApplicationDelegate> нужно написать: @interface AppDelegate : NSObject <UIApplicationDelegate, UIAccelerometerDelegate>
  • 11. Логику обработки данных акселерометра нужно добавить в метод didAccelerate в классе делегата: — (void)accelerometer:(UIAccelerometer *) accelerometer didAccelerate:(UIAcceleration *) acceleration { // Get the event data UIAccelerometValue x, y, z; x = acceleration.x; y = acceleration.y; z = acceleration.z; }
  • 12. Можно объявлять лишь один делегат для одного приложения Данные приходят асинхронно к основному потоку Диапазон частоты - 10 -100 Гц Рекомендуемая частота для игр: 30-60 Гц, для определения ориентации - 10-30 Гц
  • 13. - (void) disableAccelerometerEvents { UIAccelerometer * acc = [UIAccelerometer sharedAccelerometer]; acc.delegate = nil; }
  • 14. float angle = atan2(Y, X);
  • 15. if(angle >= -2.25 && angle <= -0.75) { if(deviceOrientation != UIInterfaceOrientationPortrait) { deviceOrientation = UIInterfaceOrientationPortrait; [interfaceOrientationLabel setText:@"UIInterfaceOrientationPortrait"]; } } else if(angle >= -0.75 && angle <= 0.75) { // code here }
  • 16. Высокочастотный фильтр (high-pass filer): #define FILTERFACTOR 0.1 value = newAcceleration - (newAcceleration * FILTERFACTOR) + + (previousValue * (1.0 - FILTERFACTOR)); previousValue = value; Низкочастотный фильтр (low-pass filter): #define FILTERFACTOR 0.1 value = (newAcceleration * FILTERFACTOR) + + (previousValue * (1.0 - FILTERFACTOR)); previousValue = value;
  • 17. Программа для исследования работы акселерометра и визуализации собираемых устройством данных. Содержит реализации высоко- и низкочастотных фильтров.
  • 18. iBells – это развлекательная программа, которая реагирует на действия пользователя и проигрывает звуки колокольчиков. Задачи: корректное реагирование на действия пользователей, т.е. именно в тот момент когда пользователь трясет устройство; реализация минимальной задержки, в течении которой музыкальный файл не должен проигрываться (это нужно для того, чтобы исключить очень частые срабатывания); Проверка на минимальный пик, на который нужно реагировать.
  • 19. В iPhone Safari был добавлен новый метод onorientationchange, который срабатывает при изменении положения на 90%. Ниже приведен javascript код, с помощью которого можно реагировать на изменение положения (orientation) веб- страницы.
  • 20. function updateOrientation() { var orientation = window.orientation; switch(orientation) { case 0: document.getElementById("currentOrientation").innerHTML = ―portrait"; break; case 90: document.getElementById("currentOrientation").innerHTML = ―left"; break; case -90: document.getElementById("currentOrientation").innerHTML = ―right"; break; } } window.onorientationchange = updateOrientation; <div id="currentOrientation" style="font-size: 40px;">Portrait</div>
  • 21. Эмулятор не поддерживает акселерометр, т.е. тестировать приложения с его использованием необходимо на реальном устройстве.
  • 22. iPhone Technology http://www.apple.com/iphone/iphone-3gs/high- technology.html UIAcceleration Class Reference http://developer.apple.com/iphone/library/docume ntation/UIKit/Reference/UIAcceleration_Class/ind ex.html Stanford iPhone Application Programming – 15. iPhone Device APIs Location, Accelerometer & Camera, Battery Life & Power iPhoner http://iphoner.org.ua/
  • 23. Alex.Krakovetskiy@gmail.com