OBEX を使用して android 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を取得します
次のコードは、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);
アップデート
上記の解決策で問題が発生している人もいます。次のデバイスでテストされています。
対象:
- LG オプティマス ワン (Android 2.1)
- HTC デザイア (Android 2.2)
- Google Nexus One (Android 2.2 および 2.3)
- サムスン ギャラクシー S2 (アンドロイド 4.0.3)
- HTC アメイズ (アンドロイド 2.3.4)
問題があります:
- LG P500 (アンドロイド 2.3.3)
- Galaxy TAB P500 (Android 2.2)
- Google ネクサス S (Android 4.1.2)
上記以外のデバイスでこのスニペットをテストできる場合は、テストしたデバイスの詳細(ブランド、名前、Android のバージョンなど) とテスト結果を下のコメント欄に記入してください。 、あなたのデータを含めて質問を更新します。