UIKeyCommandで市販の外付けバーコードリーダーからの入力を受けとる(Swift版)
Bluetoothで接続し、EAN-13やCode128等の一次元バーコードを読み取ることができるバーコードリーダーが市販されているが、それをiOSで扱う方法の一つにUIKeyCommand
があります。
UIKeyCommand
の存在は岸川さんのブログで知ったのだけど、Objective-Cの頃に書かれたものでSwiftで書き直してみたコードを残しておく。
$ xcrun swift -version Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) Target: x86_64-apple-macosx10.9
class ViewController: UIViewController { override var canBecomeFirstResponder: Bool { return true } override var keyCommands: [UIKeyCommand]? { return barcodeReaderEnabled ? self._keyCommands : nil } var barcodeReaderEnabled = true private var currentCodes: [String] = [] private var _keyCommands: [UIKeyCommand] = { let characters = CharacterSet( charactersIn: (UnicodeScalar(0x20)...UnicodeScalar(0x7f)) ).union(CharacterSet.newlines) let chars = (0x00...0x7f) .map { UnicodeScalar($0) } .filter { characters.contains($0) } return chars.map { UIKeyCommand( input: String($0), modifierFlags: [], action: #selector(handleKeyCommand) ) } }() func handleKeyCommand(sender: UIKeyCommand) { if sender.input.rangeOfCharacter(from: CharacterSet.newlines)?.isEmpty == false { debugPrint(currentCodes.joined()) currentCodes = [] } else { currentCodes.append(sender.input) } } }
ブログ用に改行を多めにしてあります。
Jan 14, 2017
mineoのSIMを契約した。 パケットギフトがオークションで再販されてるのがおもしろい。
(WIP)あのNeuroonが普通の目覚まし時計として優秀かもしれない
年末から夜型から朝方にシフトしようとしている。やれる事はなんでもやりたいと思いNeuroon購入し、数日間使ってみたところ意外と良い。
今までの生活リズム
- A.M.2-3時就寝 => 8時 - 11時半起床
- 作業時間: 22時から1時-3時までの3-5時間
短時間睡眠でやっていけるタイプではないので、遅くまで起きているとそのぶん遅くまで寝てしまう。携帯の目覚しは停まっているがその記憶は無い。 また、早めに寝てもかなりの時間まで爆睡してしまうことがあり、自己嫌悪感がすごい。 たまに気合で4時に起きていたが続かず。起きられても眠気が取れず頭が動くのは5時頃から。意思の力が強い時はスクワットを数回やると目が醒めるが、そもそも布団から出られないか、4時に覚醒しない事が多い。 4時に起床できた時は8時まで作業していた。うまくいけば4時間程度の作業ができる。
最近の生活リズム
- P.M. 23時半 - A.M. 0時就寝 => 5時半起床(本当は4時にしたい)
- 作業時間: 6時から7時半までの2時間
作業時間は少ないけど、完全に起きられない事が減ったので結果的に週ごとの作業時間は確保できている。
これまでに使ったことがある目覚まし時計
SleepCycle
- 1ヶ月で慣れて気づかない. 音もある。
Fitbitのアクティビティートラッカーの振動目覚まし
- 3日で慣れて気づかない。リストバンドに付けかえるのが面倒。気付いたらリストバンドを外している。
PebbleのSmartAlarm
- 3日で慣れて気づかない。気付いたら時計を外している。
気になっていたけど使ってなかった目覚まし時計
- 光目覚まし時計
- 自分だけ起きたいので部屋全体が明くなると困るため使えず
- 電流が走るリストバンド型
- 値段が高い上にAmazonのレビューを見るとあまり期待できない品質
- たぶん慣れる
詐欺プロダクトと言われたNeuroon
実際に製品がリリースされるまでは「短時間睡眠が実現できる」という触れ込みで盛り上がっていたためか、完成品の出来に落胆する声が大きかった。 ネットでレビューを検索してみたけど、自分の観測範囲では「届いたので使ってみたけど微妙でした」といった声が多い。 自分は短時間睡眠が目的ではないので個人用光目覚まし時計として購入してみた。メルカリで新古品が1万円前後で入手。ヤフオクにはこの価格帯で出ていなかったのでメルカリに感動。。(ヤフオクは転売屋が多く参入しているので価格が市場価格からあまり落ちないのかもしれない)
Neuroonはどうなのか
- うるさくない
- マスク内で発光するのと、マスク自体が振動するだけなので周りの迷惑になりにくい
- マスクが振動する前に覚醒する
- かなり嬉しい
- ただ、光目覚まし初体験だからかもしれない
- (比較的)頭が冴えた状態で目覚める
- 布団からさえ出られれば頭が冴えている事に気付く
- マスクの振動はそれほど意味が無い
- 全然無視して寝られる。その前に目が醒めていれば起床時間になったというお知らせの意味はある。
- マスクがはずれてしまった時は起きられなかった
あとは布団から出やすい環境作り
- 寒いと出られない
- エアコンのONタイマーを付けたら良い感じだった。バルミューダのSmartHeater2ほしい。
- 意思が弱いと出られない
- 最近DeepWorkという本を書店でみつけて読んでいるので、それで意思力が増強されている気がする。もしかしたらマスク関係無くこの本のおかげかもしれない。(だったら数日で慣れるなぁ)
- さすがに睡眠時間が短いと眠い
- 短時間睡眠は自分には幻
- できるだけ早めに寝る
まとめ
隣りの人に迷惑をかけないで済む光目覚まし時計としてNeuroonは優秀かもしれない。まだ慣れる程使っていないが、数日間使った今のところは良好。
追記 Dec 21, 2017
そういえば使い始めてから3ヶ月くらいで壊れました。