Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eBay/HeadGazeLib
A library to empower iOS app control through head gaze without a finger touch
https://github.com/eBay/HeadGazeLib
accessibility arkit headtracking ios swift
Last synced: about 1 month ago
JSON representation
A library to empower iOS app control through head gaze without a finger touch
- Host: GitHub
- URL: https://github.com/eBay/HeadGazeLib
- Owner: eBay
- License: mit
- Archived: true
- Created: 2018-09-10T18:37:40.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-12-16T19:53:17.000Z (almost 5 years ago)
- Last Synced: 2024-08-01T15:14:32.437Z (4 months ago)
- Topics: accessibility, arkit, headtracking, ios, swift
- Language: Swift
- Homepage:
- Size: 11.6 MB
- Stars: 754
- Watchers: 34
- Forks: 73
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.TXT
Awesome Lists containing this project
- awesome - HeadGazeLib - A library to empower iOS app control through head gaze without a finger touch (Swift)
README
# HeadGazeLib
![Platform iOS](https://img.shields.io/badge/platform-iOS-orange.svg)
![license MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)
## What is the Project
`HeadGazeLib` is a pure Swift library to empower iOS app control through head gaze without a finger touch.
See the story behind it [here](https://www.ebayinc.com/stories/news/ebay-open-sources-technology-that-uses-head-motion-to-navigate-user-interface-on-iphone-x/)![](https://github.com/ebay/HeadGazeLib/blob/master/examples/demo/demo/video/teaser.gif)
The above teaser is available at [example/demo](https://github.com/ebay/HeadGazeLib/tree/master/examples/demo).## Who May Wish to Use the Project
Any iOS developer who would like to introduce head-based control to their app. Ideal for accessibility and game control.## Dependencies
iPhone X, iOS 11, Swift 4## How to use the library
1. Simply copy and paste the entire folder `HeadGazeLib` to your xcode project.
2. Extend your ViewController from `UIHeadGazeViewController` and change the button outlet reference class from `UIButton` to `UIHoverableButton` or `UIBubbleButton`
```swift
class MyViewController: UIHeadGazeViewController{
@IBOutlet weak var myButton: UIBubbleButton! // UIButton!
}
```
3. Similarily, change the button class from `UIButton` to `UIHoverableButton` or `UIBubbleButton` in the identity inspector of storyboard4. Define head gaze event handler through `UIHeadGazeRecognizer` instance in `MyViewController` class
```swift
class MyViewController: UIHeadGazeViewController{
//.....
private var headGazeRecognizer: UIHeadGazeRecognizer? = niloverride func viewDidLoad() {
super.viewDidLoad()
setupGestureRecognizer()
}
private func setupGestureRecognizer() {
// set button dwell duration
self.myButton.dwellDuration = 1 // in second
// add head gaze recognizer to handle head gaze event
self.headGazeRecognizer = UIHeadGazeRecognizer()
//Between [0,9]. Stablize the cursor reducing the wiggling noise.
//The higher the value the more smoothly the cursor moves.
super.virtualCursorView?.smoothness = 9
super.virtualCursorView?.addGestureRecognizer(headGazeRecognizer)
self.headGazeRecognizer?.move = { [weak self] gaze inself?.buttonAction(button: (self?.myButton)!, gaze: gaze)
}
}
private func buttonAction(button: UIButton, gaze: UIHeadGaze){
guard let button = button as? UIHoverableButton else { return }
// The button instance would trigger TouchUpInside event after user specified seconds
button.hover(gaze: gaze)
}
@IBAction func myBtnTouchUpInside(_ sender: UIBubbleButton) {
print("Button clicked by head gaze.")
}
//....
}
```For working demo, we have prepared three examples:
1. demo: A simple jump start example showing how to empower a regular iOS app with head control with minimum code change.
2. HeadSwipe: A more serious example - swipe daily deal on eBay with head control
3. Sensitivity: An example on how to use `UIMultiFuncButton` to track the location and timestamp of the cursor as user is "clicking" the button. Useful for sensitivity analysis.## Citation
If you find this work useful in your research, please consider citing:
Cicek, Muratcan, Jinrong Xie, Qiaosong Wang, and Robinson Piramuthu. "Mobile Head Tracking for eCommerce and Beyond." arXiv preprint [arXiv:1812.07143 (2018)](http://arxiv.org/abs/1812.07143).
BibTeX entry:
```
@article{cicek2018mobile,
title={Mobile Head Tracking for eCommerce and Beyond},
author={Cicek, Muratcan and Xie, Jinrong and Wang, Qiaosong and Piramuthu, Robinson},
journal={arXiv preprint arXiv:1812.07143},
year={2018}
}
```## License
Copyright 2018 eBay Inc.
HeadGazeLib is available under the MIT license. See the LICENSE file for more info.## Developers
[Jinrong Xie](http://jinrongxie.net/), [Muratcan Cicek](https://users.soe.ucsc.edu/~cicekm/), [Qiaosong Wang](https://github.com/qiaosongwang), [Robinson Piramuthu](https://github.com/rpiramuthu)