[iOS] 방 불이 꺼지면 자동으로 Get Wild 재생, Get Wild 퇴근

12984 단어 SwiftGetWildiOS
https://twitter.com/kozeni_shkt/status/709743397196541953
http://www.b-ch.com/ttl/index.php?ttl_c=467
조도 센서라 처음에는 아두노를 생각했는데 일반 가정이나 사무실에 아두노가 없어서 iOS로 만들었어요.더 이상 사용하지 않는 아이패드에 프로그램을 넣고 사무실 출입구에 놓으세요.

모니터의 밝기(공간의 밝기)가 임계값보다 낮으면 Get Wild를 시작합니다.또한 손을 뽑았기 때문에 임계값 이하로 밝기가 변경될 때마다 Get Wild가 표시됩니다.
//
//  ViewController.swift
//  gettlod
//
//  Created by ouba on 2016/03/28.
//  Copyright © 2016年 oubakiou. All rights reserved.
//

import UIKit
import MediaPlayer

class ViewController: UIViewController {

    @IBOutlet var blightnessLabel: UILabel!
    var blightness: Float = 0.0

    @IBOutlet var thresholdSlider: UISlider!
    @IBOutlet var thresholdLabel: UILabel!
    var threshold: Float = 0.0

    var audio: AVAudioPlayer?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewDidAppear(animated: Bool) {
        blightness = Float(UIScreen.mainScreen().brightness)
        blightnessLabel.text = String(format: "%.1f", blightness)

        NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(brightnessDidChange(_:)), name: UIScreenBrightnessDidChangeNotification, object: nil)

        threshold = thresholdSlider.value*0.1
        thresholdLabel.text = String(format: "%.1f", threshold)

        thresholdSlider.addTarget(self, action: #selector(thresholdSliderValueDidChange(_:)), forControlEvents: UIControlEvents.ValueChanged)

        checkThreshold()
    }

    internal func brightnessDidChange(notification: NSNotification) {
        blightness = Float(UIScreen.mainScreen().brightness)
        blightnessLabel.text = String(format: "%.1f", blightness)
        checkThreshold()
    }

    internal func thresholdSliderValueDidChange(sender :UISlider) {
        threshold = thresholdSlider.value*0.1
        thresholdLabel.text = String(format: "%.1f", threshold)
        checkThreshold()
    }

    internal func checkThreshold() {
        if (blightness <= threshold) {
            getWildAndTough()
        }
    }

    internal func getWildAndTough() {
        let item: MPMediaItem = getMediaItemBySongFreeword("Get Wild")
        let url: NSURL = item.valueForProperty(MPMediaItemPropertyAssetURL) as! NSURL
        do {
            audio = try AVAudioPlayer(contentsOfURL: url, fileTypeHint: nil)
            audio!.play()
        } catch {
            // nothing to do
            print(error)
        }
    }

    internal func getMediaItemBySongFreeword(songFreeword : NSString) -> MPMediaItem {
        let property: MPMediaPropertyPredicate = MPMediaPropertyPredicate(value: songFreeword, forProperty: MPMediaItemPropertyTitle)
        let query: MPMediaQuery = MPMediaQuery()
        query.addFilterPredicate(property)
        let items: [MPMediaItem] = query.items! as [MPMediaItem]
        return items[items.count - 1]
    }
}
6시간의 스위프트 경력이 있기 때문에 샘플 코드로 적합하지 않은 쓰기도 포함됐을 수 있다.또 겟와일드라는 타이틀 곡이 터미널에 들어가지 않으면 붕괴될 수 있으니 사세요.
실제 운용상의 주의점으로 삼다
  • 아이폰의 휴면 설정을 무효화하고 항상 백그라운드에서 이 프로그램을 계속 시작해야 한다
  • 방이 어두워지면 모니터의 밝기가 바로 떨어지지 않기 때문에 노래가 시작되기 전에 황혼의 얼굴로 밤의 거리를 바라보며 기다려야 한다
  • 수정 내역


    제안에 따라 플레이 GetWild를 getWildAndTough로 변경한 복원이 진행됐다.thx @WorldDownTown

    추기


    겟와일드는 퇴근식 센서 애플리케이션을 쉽게 만들 수 있는 프레임을 만들었기 때문에 아이폰의 치통이 우려된다

    좋은 웹페이지 즐겨찾기