iPhoneで「置くだけ転送」出来るアプリをテストしてみたいので
iOSデバイス同士を重ねて写真を転送する誰得アプリ、仮称PutOnをテストしてみたいので、我こそはiOSデバイスを複数台持つApple信者なりという方はTestFlightっていうのこれ、を使ってテストに参加していただきたく存じます。
特に私の所持していないiPhone 4、5、iPod touch、iPad miniなどをお持ちの方はぜひ。
http://tflig.ht/XJ6QZP
どういうアプリ?
こういうの。
PutOnのつかいかた
動作環境はiOS 5以上です。
転送したい写真の入っているiPhone(またはiPad、iPod touch)と、転送先のiPhone(またはiPad、iPod touch)双方でPutOnを起動します。 同じWi-Fiネットワークに接続しているか、またはBluetoothがオンになっていることを確認してください。 |
ツールバー左端のボタンをタップして転送したい写真を選択します。 二台のデバイス双方で点滅信号が表示されたのを確認して、どちらかのデバイスのカメラが点滅信号に重なるように、二台のデバイスを重ねます。 |
接続が成功すると転送が始まります。 |
転送が終了すると転送先のデバイスで写真が表示されます。 ツールバー左端のボタンをタップするとカメラロールに保存、 左から二番目のボタンでメールやTwitterに写真を添付することが出来ます(iOS 6以降) ツールバーのゴミ箱アイコンは写真を保存することなく削除します。 |
ツールバー右端はオプションを表示します。今のところテスト中のため、カメラでの信号受信映像を表示するオプションのみです。 |
iPadは通常下側に置かれることを想定しているので、iPad同士で転送する場合はオプションの「iPad on Device」をオンにしてください。
iPhoneで「置くだけ転送」出来るアプリを作ってみたメモ
こういうの。
動機
ステップ1:画像ファイルを転送する
AppleのサンプルコードPictureSharing。
https://developer.apple.com/library/mac/#samplecode/PictureSharing/Introduction/Intro.html
Bonjourによるサービスの公開/検索と、ソケットを使ってファイル転送する部分をここから頂戴した。
ステップ2:iPhoneでGameKitを使わずにBluetooth接続する
PictureSharingのコードのまんまだとWiFiでしか転送できないので、これをBluetooth対応にしたい。都合のいいことにBonjour over Bluetoothというのがあるので、これを使えばいいはず。
https://developer.apple.com/library/ios/#qa/qa1753/_index.html%23//apple_ref/doc/uid/DTS40011315
どうやらBonjour over BluetoothはNSNetServiceでは使えないっぽいので、もっとローレベルのAPI、DNS-SDを使う必要があるっぽい。
でも大丈夫、AppleのサンプルコードDNSSDObjectsを使えば、NSNetServiceと同じような感じでObjective-Cから扱える。
https://developer.apple.com/library/mac/#samplecode/DNSSDObjects/Introduction/Intro.html
ステップ3:可視光通信する
リアルタイムの画像を得る
QRコードもある意味可視光通信だけど、なんか読み方とか分からないし、タッチするくらいの近距離だとそもそもカメラのピントが合わないので、光の点滅で通信しよう*1。
iPhoneのカメラからリアルタイムの画像を得るには、AVCaptureなんたらを使う。
実践! iPhoneアプリ開発40 ビデオカメラアプリの作り方 (1) - セッションの作成
どうせ至近距離でボケるんだから画像のサイズも最小限でいい。今回はさらに3x3のサイズに縮小して、9ピクセルそれぞれから信号をデコードしている。どれかちゃんと受信できるだろ多分。
どうやってエンコードしようか
明暗を1と0にして通信すればいいけど、何msごとに明暗を判定するとか、ええとなんだその、クロックを同期させなければならない。一応30fpsにしたけどこれフレームレート保証されるわけじゃ無いんでしょ?どうしよっか?ということで、今回はこうしてみました。
- シグナルをRGBに分ける
- Rは常に点滅を繰り返す。Rの立ち上がりと立ち下がりの時点でその他のチャンネルを読む
- GとBの明暗によって2bitのデータを得る。4回で8bit。1byteゲットだぜ
- 一定時間Rの点滅がなかったら信号終わりかなってことで、文字列にしてみる
点滅を繰り返しながら、信号無しの時間を1秒間挟んでいる。この1秒間は画面側に白を表示して、カメラ側でも一定時間白だったら自動露出補正をオンにして露出を調整してから、自動露出補正をオフにして信号受信に備えている。
ステップ4:今後の課題
- 今のままだとこれBonjourのサービス名を可視光通信で送ってるだけなので、可視光通信しなくても無差別に接続しちゃうクライアントがあったら画像送っちゃう。公開するんだったらここをもうちょっとなんとかすべき
- 私が持ってるのはiPhone 4Sと4GSとiPad 3だけだから、他の機種のカメラでちゃんと認識できるのかわからない
- というか私の全部カバーないから、カバー有りだとまた変わるかも分からない
- 点滅繰り返してポケモンショックとかならないのか
あとなんかカシオでも似たようなのやってたみたいよ
*1:このあたりで実用性はログアウトしました
Thousand B180 リリース
http://www.rnatori.net/downloads/ThousandB180.dmg
B177からの変更点
- 終了時にタブの内容を保存し、次回起動時に復帰するオプションを追加
- スレッド表示時のスクロール位置を保存・復帰するオプションを追加
- Lionでプラグインの設定項目が表示できない問題を修正
- 板を更新していなくても、●にログインしている場合dat落ちしたスレを判定し未取得分を取得するように
- 「アクション」から自分の書き込んだレス、それに対する返信を抽出できる
- Beログインの方法をメールアドレスとパスワードを使う方法に
- 「全ての板」に忍者の里板を追加
- スレ立ての際に不正な日付を送信していた問題を修正
- 10.4で板移転追跡時や書き込み完了時にクラッシュする問題を修正
- スレッドリストのソートが保存されなかったりする問題を修正
B177のTips
タブ内容保存のつかいかた
環境設定の「アピアランス」から「タブの内容を保存する」にチェックを入れます(デフォルトでチェックは入っているはずです)。
保存されるのはウインドウ・タブを開いたままThousandを終了した場合です。ウインドウをただ閉じた時は保存されないので注意してください。
スクロール位置保存のつかいかた
環境設定の「スレッド」の「表示範囲」から「全てのレス(スクロール位置を保存)」を選択します(B180以降デフォルトです)。
このオプションを使うと、スレッドを更新したとき、新着レスにジャンプしません
「スレッド」メニューの「最初の100レスを表示」などは単にスレッド内でジャンプするだけの機能になっています。
公式P2
公式P2を初めて使う方は、http://p2.2ch.net/ においてモリタポアカウントの作成、書き込みの有効化などを行ってください。
Thousand 110814 テスト版
ダウンロードはこちら
http://www.rnatori.net/downloads/Thousand110814.zip
- 「スレッド」メニューのメニュー項目の表示がおかしくなる問題を修正
- スキンで定義されているページ内アンカーが無効になっていた問題を修正
- スレッドを開いたときに新着レスが表示されない不具合の一部を修正
サイト移転してるよ -夏-
http://www.rnatori.net/
Thousand 110804 テスト版
注意事項とかは例によって例のごとく前のエントリを。何ヶ月前だ
ダウンロードはこちら
http://www.rnatori.net/downloads/Thousand110804.zip
- Lionでプラグインの設定項目が表示できない問題を修正
- Safari 5.1でスレッドの表示範囲を「全てのレス(スクロール位置を保存)」にしている場合の新着レスのスタイルが更新時に消えない問題に対処
- 板を更新していなくても、●にログインしている場合dat落ちしたスレを判定し未取得分を取得するように
サイト移転しました -夏-
http://www.rnatori.net/
Thousand 110708 テスト版
注意事項とかは例によって例のごとく前のエントリを。
ダウンロードはこちら
http://www.rnatori.net/downloads/Thousand110708.zip
- 「全ての板」に忍者の里板を追加
- スレ立ての際に不正な日付を送信していた問題を修正
- 「アクション」から自分の書き込んだレスを抽出できたり
サイト移転しました -夏-
http://www.rnatori.net/