我有一个要求 - 我必须通过我的Android设备通过蓝牙适配器将一些图像和文件发送到PC。 根据android文档,为了通过蓝牙在两个设备之间建立连接,你需要将一个作为客户端,另一个作为服务器。 我可以通过在两个不同设备之间实现BluetoothSocket连接来连接两个设备。 但是我如何让我的Pc通过代码充当服务器。
我将如何在代码的帮助下实现这一目标。
所以,这是我通过BluetoothSocket提出请求作为客户端的代码
user.Address.Line1
答案 0 :(得分:0)
因为您使用Android,我认为您熟悉Java。所以我为你看了互联网,并找到了一个如何制作一个简单的蓝牙服务器的示例:
不幸的是,它正在使用另一个jar来访问蓝牙功能。但是我在博客上发现了更多关于它的信息:
Bluecove是一个JSR-82实现。 JSR-82是一个Java规范,用于定义用于与蓝牙设备通信的API。
阅读代码作为Java新手告诉我你需要设置Bluetotth服务器的步骤(用Java):
所以它就像通过套接字构建自己的TCP服务器。我只是读了它并想了想。 我没有测试过它!所以我不能说这是否会正常运行。但我认为这有点让你以正确的方式指出。
此外,我在oracle page
上发现了一篇关于蓝牙和Java的文章玩得开心!
答案 1 :(得分:0)
我建议让android处理这个,如果适用于你的情况。
首先检查设备上是否有蓝牙
BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
if (btAdapter == null) {
// No Bluetooth available on the device
}
如果它可用,我们可以启动一个intent,让android操作系统处理你的文件发送。
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
File file = new File("<THE PATH TO YOUR FILE>");
sharingIntent.setType("text/plain");
sharingIntent.setPackage("com.android.bluetooth");
//you can also pass a ArrayList<Uri> uriList for multiple files.
sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
startActivity(Intent.createChooser(sharingIntent, "Share file"));
这将显示一个新活动,提示用户选择蓝牙设备。由于对话框仅显示配对设备,因此这将是一个先决条件。
您可以通过createBond()
上的BluetoothDevice
来致电配对(有关详细信息,请参阅此处createBond() apidoc。
这可能看起来像这样
BluetoothDevice bluetoothdevice = BluetoothConnection.btAdapter.getRemoteDevice("14:F6:5A:63:0F:8E");
bluetoothdevice.createBond();
触发发送,在BroadcastReceiver
ACTION_BOND_STATE_CHANGED
final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, -1);
if (bondState == BluetoothDevice.BOND_BONDED) {
//Trigger the sending via the above mentioned method
}
}
};