Opp o 93:使用蓝牙OBEX对象推送配置文件(OPP)发送文件

有没有办法使用 OBEX 使用 Android 蓝牙 API 发送文件?

我需要将文件发送到仅支持 OBEX OPP 的打印机。

我可以使用 Android 的意图 ACTION_SEND 文件发送到打印机没有问题,但我需要以编程方式发送它。

我可以使用方法 createRfcommSocketToServiceRecord()使用 OBEX OPP UUID(1105)连接到蓝牙打印机,但是我应该遵循 obex 规范使用 OBEX 发送文件。它不像将字节写入输出套接字那么简单。

但是,如果意图 ACTION_SEND 可以处理这个问题,为什么没有任何 API 为开发人员发送文件?

我还检查了一些第三方库,如 BlueCove,但我仍然没有得到它的工作..(Nexus One & amp;Galaxy Tab 抛出一个异常,说本地库 bluecove_armv71 不可用..和 LG Optimus One 说 bluecove_armv61 不可用..)

我卡住了,有什么想法吗?

工作解决方案

对于任何试图将文件发送到蓝牙设备而没有运气的人,我使用内容提供商提供了一个有效的解决方案(感谢 KPBird):

here获取 java 类BluetoothShare

然后,以下代码将 SD 卡上的文件发送到蓝牙设备:

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);
UPDATE

有些人遇到上述解决方案的问题,它已经在以下设备上进行了测试:

适用于:

LG Optimus One(Android 2.1)

HTC Desire (Android 2.2)

Google Nexus One(Android 2.2 和 2.3)

三星 Galaxy S2(Android 4.0.3)

HTC Amaze(Android 2.3.4)

有问题:

LG P500(Android 2.3.3)

Galaxy TAB P500(Android 2.2)

Google Nexus S(Android 4.1.2)

如果您能够在上面未列出的设备上测试此代码片段,请提供设备的详细信息(品牌,名称,Android 版本等)您测试它,以及测试结果,在下面的评论中,我将更新问题,包括您的数据。

4

我写了一个sample application来测试所提供的答案。不幸的是,它对我不起作用,所以我认为这个问题没有完全回答。

3

我认为在 Android 中支持 OPP。在 android / packages / apps / Bluetooth /...../ opp / *.java 中有一条路径

如果你的版本没有这个,我发现了一个有用的链接,这将有助于在 Android 中使用 OBEX OPP。

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

没有用于访问 OBEX 的公共 API。关于为什么没有 API-Google 最了解:)

0

有人说它在一些三星手机上工作正常,但在其他三星手机上不起作用。然后我用“BluetoothShare”编写了一个简单的测试程序,并让我的朋友借我手机来测试...

它不能在 HTC 令人难以置信的工作

它可以在 SonyEricsson Xperia arc S 中工作

因此,我认为有些手机与这些 BluetoothShare 代码不兼容...

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(629)
Last order:MySQLOrderby一个数字 最后为 Null
上一篇
Mmd动作:在makefile中使用g++和-MMD自动生成依赖关系
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(7条)