7. Swift 센서
반드시 실제 기기에서 테스트를 해야만 데이터를 얻을 수 있다
class ViewController: UIViewController,CLLocationManagerDelegate {
private var cmm:CMMotionManager!
private var queue:NSOperationQueue!
//
private var lm:CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.cmm = CMMotionManager()
self.queue = NSOperationQueue()
self.lm = CLLocationManager()
self.lm.delegate = self
}
func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading){
NSLog("\(newHeading)")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//
private func startAccelerometerUpdatesToQueue(){
self.cmm.accelerometerUpdateInterval = 1
if(self.cmm.accelerometerAvailable && !self.cmm.accelerometerActive){
self.cmm.startAccelerometerUpdatesToQueue(queue, withHandler: {
(data:CMAccelerometerData?, err:NSError?) in
NSLog("\(data)")
})
}else{
NSLog(" ")
}
}
//
private func startGyroUpdatesToQueue(){
self.cmm.gyroUpdateInterval = 1;
if(self.cmm.gyroAvailable && !self.cmm.gyroActive){
self.cmm.startGyroUpdatesToQueue(queue, withHandler: {
(data:CMGyroData?, err:NSError?) in
NSLog("\(data)")
})
}else{
NSLog(" ")
}
}
//
private func startListenerProximity(){
UIDevice.currentDevice().proximityMonitoringEnabled = true
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("proximityChanged"), name: UIDeviceProximityStateDidChangeNotification, object: nil)
}
//
private func startListenerBatteryLevel(){
UIDevice.currentDevice().batteryMonitoringEnabled = true
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("batteryLevelChanged"), name: UIDeviceBatteryLevelDidChangeNotification, object: nil)
}
//
private func proximityChanged(){
NSLog("\(UIDevice.currentDevice().proximityState)")
}
//
private func batteryLevelChanged(){
NSLog("\(UIDevice.currentDevice().batteryLevel)")
}
//
private func stopListenerBatteryLevel(){
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIDeviceBatteryLevelDidChangeNotification, object: nil)
}
//
private func stopListenerProximity(){
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIDeviceProximityStateDidChangeNotification, object: nil)
}
//
private func stopAccelerometerUpdates(){
if(self.cmm.accelerometerAvailable){
self.cmm.stopAccelerometerUpdates()
}
}
//
private func stopGyroUpdates(){
if(self.cmm.gyroAvailable){
self.cmm.stopGyroUpdates()
}
}
// ViewController
override func viewWillAppear(animated: Bool) {
self.startAccelerometerUpdatesToQueue()
self.startGyroUpdatesToQueue()
self.startListenerProximity()
self.startListenerBatteryLevel()
//
self.lm.startUpdatingHeading()
}
// ViewController
override func viewWillDisappear(animated: Bool) {
self.stopAccelerometerUpdates()
self.stopGyroUpdates()
self.stopListenerProximity()
self.stopListenerBatteryLevel()
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Gravio LED 매트릭스를 사용하여 CO2를 간판으로 시각화Gravio에서 CO2를 가시화하는 시리즈 제5탄입니다. 이번에는 조금 평소와 분위기가 다릅니다. 드디어 Gravio LED 매트릭스의 출하 개시! 그것을 기념하여 LED 매트릭스를 사용하여 시각화하고 싶습니다. 과...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.