zoukankan      html  css  js  c++  java
  • 检测设备朝向和移动

    1、加速计和陀螺仪

    导入CoreMotion.framework框架。

    @IBOutlet var xLabel:UILabel!
        @IBOutlet var yLabel:UILabel!
        @IBOutlet var zLabel:UILabel!
        
        @IBOutlet var orientationLabel:UILabel!
        
        //加速计管理者-所有的操作都会由这个motionManager接管
        var motionManager:CMMotionManager!
    //------ CoreMotion 加速计
            motionManager = CMMotionManager()//注意CMMotionManager不是单例
            motionManager.accelerometerUpdateInterval = 0.1//设置读取时间间隔
            
            if motionManager.accelerometerAvailable//判断是否可以使用加速度计
            {
                //获取主线程并发队列,在主线程里跟新UI
                motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { (let accelerometerData:CMAccelerometerData?, let error:NSError?) -> Void in
                    
                    if error != nil
                    {
                        self.motionManager.stopAccelerometerUpdates()//停止使用加速度计
                    }else
                    {
                    
                        self.xLabel.text = "x:(accelerometerData!.acceleration.x)"
                        self.yLabel.text = "Y:(accelerometerData!.acceleration.y)"
                        self.zLabel.text = "Z:(accelerometerData!.acceleration.z)"
                    }
                })
                
                
            }else
            {
                let aler = UIAlertView(title: "您的设备不支持加速计", message: nil, delegate: nil, cancelButtonTitle: "OK")
                aler.show()
            }

    2、判断设备方向

    //感知设备方向-开启监听设备方向
            UIDevice.currentDevice().beginGeneratingDeviceOrientationNotifications()
            
            //添加通知,监听设备方向改变
            NSNotificationCenter.defaultCenter().addObserver(self, selector: "receivedRotation", name: UIDeviceOrientationDidChangeNotification, object: nil)
            
            //关闭监听设备方向
            UIDevice.currentDevice().endGeneratingDeviceOrientationNotifications()
    // MARK: - 判断设备方向代理方法
        func receivedRotation()
        {
            let device = UIDevice.currentDevice()
            
            if device.orientation == UIDeviceOrientation.Unknown
            {
                orientationLabel.text = "Unknown"
            }
            else if device.orientation == UIDeviceOrientation.Portrait
            {
                orientationLabel.text = "Portrait"
            }
            else if device.orientation == UIDeviceOrientation.PortraitUpsideDown
            {
                 orientationLabel.text = "PortraitUpsideDown"
            }
            else if device.orientation == UIDeviceOrientation.LandscapeLeft
            {
                 orientationLabel.text = "LandscapeLeft"
            }
            else if device.orientation == UIDeviceOrientation.LandscapeRight
            {
                 orientationLabel.text = "LandscapeRight"
            }else if device.orientation == UIDeviceOrientation.FaceUp
            {
                 orientationLabel.text = "FaceUp"
            }
            else  if device.orientation == UIDeviceOrientation.FaceDown
            {
                 orientationLabel.text = "FaceDown"
            }
        }

    3、摇晃事件

    // MARK: - 摇晃事件
        override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?)
        {
            
            print("motionBegan")//开始摇晃
        }
        
        override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?)
        {
            print("motionEnded")//摇晃结束
        }
        
        
        override func motionCancelled(motion: UIEventSubtype, withEvent event: UIEvent?)
        {
            print("motionCancelled")//摇晃被意外终止
        }
  • 相关阅读:
    国货之光业务增长背后的技术支持
    减少运维工作量,如何通过 ROS 轻松实现资源编排新方式
    我在阿里写代码学会的六件事
    SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)
    视频需求超平常数 10 倍,却节省了 60% 的 IT 成本投入是一种什么样的体验?
    从单体到混乱的微服务,阿里云托管式服务网格是如何诞生的?
    阿里张磊:如何构建以应用为中心的“Kubernetes”?(内含 QA 整理)
    python之深度学习-模拟异步操作(队列)
    python之深度学习-队列处理数据(同步)
    python深度学习-tensorflow实现一个线性回归的案例
  • 原文地址:https://www.cnblogs.com/fengmin/p/5715550.html
Copyright © 2011-2022 走看看