Android OBEXを使用するBluetooth APIを使用してファイルを送信する方法はありますか?
OBEX OPPのみをサポートするプリンターにファイルを送信する必要があります。
AndroidインテントACTION_SENDを使用して問題なくプリンターにファイルを送信できますが、プログラムで送信する必要があります。
CreateRfcommSocketToServiceRecord()メソッドでOBEX OPP UUID(1105)を使用してBluetoothプリンターに接続できますが、OBEXを使用してファイルを送信するにはobex仕様に従う必要があります。出力ソケットにバイトを書き込むほど簡単ではありません。 。
しかし、ACTION_SENDインテントがこれを処理できる場合、開発者がファイルを送信するためのAPIがないのはなぜですか?
BlueCoveのようないくつかのサードパーティのライブラリもチェックしましたが、動作しませんでした。(Nexus One&Galaxy Tabは、ネイティブライブラリbluecove_armv71が利用できないことを示す例外をスローします..およびLG Optimus Oneによると、bluecove_armv61は使用できません。
私は行き詰まっています、何かアイデアはありますか?
実用的なソリューション
運が悪いのでBluetoothデバイスにファイルを送信しようとする人のために、コンテンツプロバイダーを使用した実用的なソリューションを提供します(KPBirdに感謝):
JavaクラスBluetoothShareを here から取得します
次のコードは、SDカード上のファイルをBluetoothデバイスに送信します。
BluetoothDevice device;
String filePath = Environment.getExternalStorageDirectory().toString() + "/file.jpg";
ContentValues values = new ContentValues();
values.put(BluetoothShare.URI, Uri.fromFile(new File(filePath)).toString());
values.put(BluetoothShare.DESTINATION, device.getAddress());
values.put(BluetoothShare.DIRECTION, BluetoothShare.DIRECTION_OUTBOUND);
Long ts = System.currentTimeMillis();
values.put(BluetoothShare.TIMESTAMP, ts);
Uri contentUri = getContentResolver().insert(BluetoothShare.CONTENT_URI, values);
[〜#〜]更新[〜#〜]
上記のソリューションで問題が発生している人もいます。次のデバイスでテストされています。
動作します:
に問題があります:
上記以外のデバイスでこのスニペットをテストできる場合は、デバイスの詳細を提供してください(ブランド、名前、Androidバージョンなど)テストしたテスト結果とテスト結果を、以下のコメントで、あなたのデータを含めて質問を更新します。
提供された答えをテストするために サンプルアプリケーション を作成しました。残念ながらそれは私にとってはうまくいきませんので、この質問は完全に答えられていないと思います。
Androidでサポートがあると思います。Android/ packages/apps/Bluetooth /...../ opp/*。Javaにパスがあります
あなたのバージョンにこれがない場合、私はAndroidでOBEX OPPを使用するのに役立つ便利なリンクを見つけました。 Androidここでフレームワークの変更が必要です。
http://i-miss-erin.blogspot.in/2009/10/how-to-have-obex-function-in-Android.html
OBEXにアクセスするためのパブリックAPIはありません。なぜAPIがないのか-Googleが最もよく知っています:)
一部のSamsung製の携帯電話では問題なく機能するが、他のSamsungの携帯電話では機能しないとのことです。次に、「BluetoothShare」を使用して簡単なテストプログラムを作成し、テストのために電話を借りるように友達に依頼しました...
したがって、一部の電話はこれらのBluetoothShareコードと互換性がないと思います...