23

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 のバージョンなど) とテスト結果を下のコメント欄に記入してください。 、あなたのデータを含めて質問を更新します。

4

4 に答える 4

4

提供された回答をテストするサンプル アプリケーションを作成しました。残念ながら私にはうまくいかないので、この質問は完全には答えられていないと思います。

于 2011-08-17T10:19:44.077 に答える
3

AndroidではOPPがサポートされていると思います。android/packages/ apps / Bluetooth /...../ opp/*。javaにパスがあります。

お使いのバージョンにこれがない場合は、AndroidでOBEXOPPを使用するのに役立つ便利なリンクを見つけました。ここではAndroidフレームワークの変更が必要です。

http://i-miss-erin.blogspot.in/2009/10/how-to-have-obex-function-in-android.html

于 2012-10-22T06:56:30.920 に答える
2

OBEX にアクセスするための公開 API はありません。API がない理由について - Google が最もよく知っています :)

于 2011-04-07T18:33:15.137 に答える
0

一部のSamsung電話では正常に機能するが、他のSamsung電話では機能しないと誰かが言った. 次に、「BluetoothShare」を使用して簡単なテスト プログラムを作成し、友人に電話を借りてテストしてもらいました...

  1. HTC Incredible では動作しません
  2. SonyEricsson Xperia arc Sで動作します

そのため、一部の携帯電話はこれらの BluetoothShare コードに対応していないと思います...

于 2012-03-09T08:10:00.560 に答える