したいこと
PCとスマホ間でデータを共有したい案件がありまして、画像とその付属データを共有を考えています。
単にファイルのみなら、フォルダ共有のようなことを行えばよいかと思うのですが、データベースに入れたデータを送りたいと言ったような場合、いちいちファイルにして送るのも、そのままデータで送るのも同じなのでは?と思った次第です。(その逆もしかりで、ファイルにして、共有すれば良いかもしれません。ただこれだと共有するデータが多数の場合、どこまで共有したいのかなどの共有のリストが必要で、それは少し面倒だなと思いました。)
もう一つのモチベーションとしては、通信自体にも興味があります。
通信方法
PC↔Android間の通信には、以下のような種類があるかとおもいます。一般的に安価で、入手可能な範囲で調べていきます。高価なものは、私のような個人のプロジェクトには向きませんので。
USB
USBケーブルだけで、データを送付できると以前から便利だなぁと思ってます。ただ、MTP以外をあまり見かけないのはなぜ??そこに何か理由があるならしりたいと思ってもいます。
- libusb・AOA2等のライブラリを使った通信
- MTP/WTPを使ったファイル共有
- シリアル通信変換ケーブルを使ったシリアル通信
Wifi無線LAN
ここら辺ももっと簡単にWifiでデータ共有できたらなぁと前から思っていたのですが、あまり見ないので、そこらへんも何かあるのか?それともPCとAndroidのプログラミングを触れる人が少ないのかなぁとか勝手に想像したりもしています。確かに面倒ですしね。
- TCP/IP-ソケット通信
- WebRequest/WebClient
- C# による簡易 HTTP サーバの実装
- C#とPHPでファイルアップロード
- 上記のような内容を参考にPC内にホストを作成.ただしHTTPSにする必要あり。
- Wifi Direct(android,uwp)
bluetoothでの通信
一度集中的に調べたのですが、まとめてなかったので、忘れてしまいました。確か1対1が面倒だったり、Windows上でLinuxでいうところのBlueZみたいなものがないのが、致命的だったような。うろ覚えですみません。書きながら・再調査して、思い出したいと思います。 GATTのような通信もあるのですが、SPP以外は大変面倒だったというのも記憶してます。ここら辺を明らかにしたいと思います。
- spp
- ビーコン(軽めのデータ)
WEB系(サーバ経由)
PHPとかを使うやつです。一度外に出すので、認証とか、セキュリティ向上が大事かも。
- get-post
- ソケット通信
その他の手段
- メール
- フォルダ共有
あと、QRコードとか、nfc-HCEなんかもこれの一種ではないかという気がしてきました。
評価のポイント
先ほども書きましたが、一般的に安価で、入手可能な範囲で調べていきます。以下のような点にも注意して、調査したいと思います。
- 接続(運営)コスト・管理コスト
- 同時接続数
- 接続条件
- セキュリティ
- 使用する場面
- スピード
- データ量
- ライブラリのライセンス
これらをやりたいものから一つずつ、実装しながら問題点等を確認していきたいとおもいます。(自分の能力不足もふくめて検証)
環境
開発・実際にコーティングしていく環境としては、以下の通りです。
PC側:win10, C#
Android側: Android9,pixe3, Kotolin, Java