使用安卓蓝牙发送文件?

8
有没有办法使用Android内部蓝牙将文件发送到其他设备?请提供示例。

4
你为什么不先谷歌一下呢? - Pratik
2个回答

4
这是一个小函数,您可以使用它。
/**
     * Method to share data via bluetooth
     * */
    public void bluetoothFunctionality() {
        String path = Environment.getExternalStorageDirectory() + "/"
                + Config.FILENAME;

        File file = new File(path);

        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
        startActivity(intent);
    }

这种方法将使用默认的设备蓝牙功能将文件发送到另一个设备。在执行此操作之前,您必须首先配对设备,这是一种限制。要发送不同类型的文件,只需在设置类型方法中更改MIME类型即可。

在您的清单文件中,您必须添加两个权限,例如:

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH" />

3

Android没有明确的OBEX api,这有些奇怪。无论如何,看一下这个项目:


或者你可以使用这个解决方案

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

(I need 这个类)

你的意思是 API链接 吗? - Reno
@Reno..我尝试在我的应用程序中使用上面的代码片段,但它没有将文件发送到目标设备。我们是否需要像下面这样从意图开始。蓝牙可以支持共享哪些文件格式。 - Senthil Mg
@Reno,我看了你的解决方案,真的很棒,我已经将其标记为有用,但我需要一些建议。实际上,在我的应用程序中,我必须连接配对的蓝牙设备来打印图像...请告诉我最好的方法是什么? - Sun
你可以查看这个答案。从4.2开始,Bluez被Broadcom开发的Bluedroid堆栈所取代。在源代码中,我可以看到一些hcrp和bpp事件,但我不认为它们得到了支持。 - Reno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接