あたためていたアプリを遂に公開しました。
その名は『Bluetooth OPP PUT』というアプリケーションです。
BluetoothのOPP(Object Push Profile)に対応した機器に対して、指定されたファイルを送信することができます。
例えば、ポラロイド PoGo™に対して、画像ファイル(JPEG)を送ると、印刷してくれます。
■アプリの使い方
STEP1 ファイルを送信する機器のBluetoothアドレス登録およびペアリングを行う。
本アプリを起動すると、Bluetooth機器の検索が始まります。
検索が完了すると、機器の一覧が表示されるので、ファイルを送信したい機器を選択します。
(この時に、ペアリングが必要な場合はペアリング処理を行ってください。)
完了すれば、送信先が登録されます。
これで、送信準備OKです。
STEP2 ファイルの送信要求
アプリの共有機能を使って、本アプリへ送信したいファイルの指示を行います。
ここでは、標準で搭載されている『ギャラりー』を使った場合の手順です。
送りたい画像を選択すると、こんな画面になるかと思います。
すると、上記の部分に『共有』というのが出ていると思いますので、選択します。
すると、共有可能なアプリケーションの一覧が表示されるので、『Bluetooth OPP PUT』を選択してください。
本アプリが起動され、STEP1で指定したBluetooth機器に接続を行い、ファイルの転送が行われます。
■ダウンロード方法
『Androidマーケット』→『ツール』→『Bluetooth OPP PUT for 1.6』 (Android 1.6端末の場合)
『Androidマーケット』→『ツール』→『Bluetooth OPP PUT for 2.x』 (Android 2.0/2.1端末の場合)
興味ありましたら、是非、お使いください。
「Android Marketに『Bluetooth OPP PUT』を公開しました。」への21件のフィードバック
コメントは停止中です。
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; MEGAUPLOAD 3.0; .NET CLR 3.0.30729)
初めまして。
早速DLして使わせてもらっています。なかなか使いやすくて非常にありがたいです。
私も今同じようなアプリを趣味で作ろうと考えているのですが、OPPの実装方法がどうにもよくわかりません。
もしよろしければどのように実装すればいいか教えていただけないでしょうか。
よろしくおねがいします。
AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTB6
はじめまして
Bluetooth OPPの実装方法ですが、私もかなり苦労したので、ヒントを差し上げます。
OPPはRFCOMM上で実装されているので、IrOBEXのサブセットを実装すればできます。
AndroidではRFCOMMのAPIが提供されているので、気合でなんとかなります。
ご参考までに
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; MEGAUPLOAD 3.0; .NET CLR 3.0.30729)
ありがとうございます。
気合がどの程度なのか分かりませんが・・・
頑張ります。
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; MEGAUPLOAD 3.0; .NET CLR 3.0.30729)
ちなみに私はAndroid open source projectなどから
OPPのソースコードを落としたり、NDKを利用したりなどして、実装できないかを考えていたのですが・・・
その辺は利用したりしたのでしょうか?
AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTB6
Android 2.xであれば、標準のAPIだけでできますので、NDKは不要です。
私自身、Android open source projectとかのソースを使っていませんし、OBEXってなんだろうか?と勉強しながら、実装しただけです。
私は、TCPソケットを用いて、各種プロトコルを実装したことあるから、作れたのかもしれません。
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; MEGAUPLOAD 3.0; .NET CLR 3.0.30729)
なるほど。
NDKを使用しなくてもHT-03AでOPPを実装することが可能なことが分かっただけでもとても助かりました。
ありがとうございます。
チャットアプリなら趣味でも作ったりはしたのですが、さすがにファイル送信となるとかなり違ってくるようですね。
AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTB6
チャットアプリ作ったことあるんでしたら、作れると思いますよ。
ただ、OBEXは、命令がバイナリなので、そこが厄介かもしれませんが、仕様さえ入手できれば、結構スムーズにいくかもしれません。
頑張ってみてください。
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; MEGAUPLOAD 3.0; .NET CLR 3.0.30729)
何から何までありがとうございます。
最後に一つ。
チャットだとメッセージをストリームで流すだけでしたが、
kazuyukiさんもおっしゃられているように、バイアンリとなると厄介かと思います。
このバイナリをバイト配列とかに変換してストリームで流すという方法なら思いついたのですが、これですとHT-03A同士でしか送受信できませんよね?
やはり既存携帯と送受信するには、また一工夫が必要と言うことでしょうか?
AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTB6
Bluetoothのプログラム書いてみるとわかると思いますが、最終インターフェースは、InputStreamとOutputStreamになります。
データとして、byte配列で送受信する形になります。
何を気にしているのか?わかりませんが、機種依存性はないと思いますけど・・・
反対に、あったら困りますけど・・・
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; MEGAUPLOAD 3.0; .NET CLR 3.0.30729)
Android1.6って基本的にOPPのプロファイルはないですよね?
なんというか、ストリームで流すっていうのは、単純にHT-03A同士でしか成り立たないと考えていました。
なので、OPPを実装するには、何か特別な送信方法を用いる必要があるのかと思っていたのですが・・・そういうわけではないのですか?
AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTB6
標準の機能で、OPPが提供されていないから、実装したんですけど・・・
OPPはRFCOMMの上で動く、プロトコルですので、作ればできるということです。
これ以上解説してもどうか?と思うので、実際に挑戦してみてください。
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; MEGAUPLOAD 3.0; .NET CLR 3.0.30729)
お久しぶりです。
その節はありがとう御座いました。
ファイルの送信方法についてはかなり情報も集まり、恐らくは問題ない部分まで来ることが出来ました。ありがとうございます。
しかし、対処法の良く分からない例外などが出て困っています。
\”Transport endpoint is not connected\”
という例外をご存知でしょうか?
どうも接続が確立されていないと出てくるらしいのですが、
Android携帯をクライアントとして、既存携帯などと接続を試みるとどうもうまく接続が行われないようなのです。
kazuyukiさんはこのような現象などご存じないでしょうか?
よろしくお願いします。
AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 GTB6
kazuさん
エラーの内容的には、相手に接続できませんでしたという意味でよろしいかと思います。
受信側の機器とペアリングが完了していないか or OPPを受信出来る状態になっていないことが原因です。
一般的な携帯だと、受信する携帯側で、データを受信するみたいな動作をさせないと受信できません。
受信する側の携帯のbluetoothメニューにデータ受信はありませんか?
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; MEGAUPLOAD 3.0; .NET CLR 3.0.30729)
受信側の携帯では常にデータ受信を行っています。
私はbackportライブラリを用いて現在開発を行っていますが、
単にsocketのconnectを行うだけでは、既存携帯との接続は行えないのでしょうか?
ちなみにこの例外は、connectを行ったときではなく、その後バイナリファイルをwriteするときに出てくる例外なのです。
AGENT: Mozilla/5.0 (Linux; U; Android 2.1-update1; ja-jp; Nexus One Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17
お使いのライブラリーの仕様がわかりませんが、OPPを提供しているRFCOMMポート番号が取得できていないんじゃないかと思います。
この役割は、SDPプロファイルが行います。
ライブラリーで、サービス指定するパラメータありませんか?
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
UUIDを指定してソケットを作成しています。
ほかには、サービスを指定するようなものはございません。
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
backportだと、下記のようにUUIDを指定しても
必ずportとして1が返ってくるように作られているようです
AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; MEGAUPLOAD 3.0; .NET CLR 3.0.30729)
申し訳ありません。
ファイルの送信に関して大体は実装することが出来ました。
ただ、受信側がどうしても60%ほどで受信が止まってしまうのですが、何かファイルのデータ送信以外に、ストリームに書き込む情報などがあるのでしょうか?
AGENT: Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB6
OBEXの仕様調べていますよね?
AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)
もちろんです。
というか、画像の送信は実装できました。
ありがとうございました。
Polaroid PoGo CZJ-10011B
目次 目次 バージョンと製造年月日 電源を入れる 写り 屋外写真 屋内写真 Bluetoothによる写真の転送 Android編 iPhone編 参考サイト コメント タグ ▲ ▼バージョンと…