通过蓝牙从winRT发送文件到android / WP设备

我正在开发一个Windows商店应用程序,并试图通过蓝牙发送文件到Android(和Windows Phone)设备。

根据MSDN的一个例子,我编写了以下代码:

public async static void SendAsync(StorageFile file) { var id = RfcommDeviceService.GetDeviceSelector(RfcommServiceId.ObexObjectPush); var devices = await DeviceInformation.FindAllAsync(id); // -> Returns one windows phone and two android devices if (devices.Count > 0) { // Use the 3th device (android tablet) var service = await RfcommDeviceService.FromIdAsync(devices[2].Id); // Create a socket and connect to the target using (var socket = new StreamSocket()) { await socket.ConnectAsync( service.ConnectionHostName, service.ConnectionServiceName, SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication); byte[] bytes; using (var stream = await file.OpenStreamForReadAsync()) { // stream.Length = 4621038 bytes = new Byte[stream.Length]; await stream.ReadAsync(bytes, 0, bytes.Length); } using (var dataWriter = new DataWriter(socket.OutputStream)) { dataWriter.WriteBytes(bytes); Debug.WriteLine("Sending data..."); var result = await dataWriter.StoreAsync(); var flushed = await dataWriter.FlushAsync(); dataWriter.DetachStream(); Debug.WriteLine("Sending data finished. Result: " + result + " flushed: " + flushed); // Output: // Sending data... // Sending data finished. Result: 4621038 flushed: True } } } } 

Package.appxmanifest看起来像:

        

运行代码时,似乎工作正常。 该应用程序询问“可能[AppName]使用您的[DeviceName]?” 并且字节似乎是发送的(dataWriter.StoreAsync()返回要发送的字节数)。

Android设备将被激活(灯亮)一秒钟。 但就是这样。 我希望在Android设备上得到一个请求,如:“Windows 8尝试发送文件,接受是/否”,但我没有。

发送的文件不在Android设备上(通常,通过蓝牙发送的文件位于蓝牙文件夹中)。

你有什么想法让它发挥作用/发现错误?

谢谢,Jan

刚才简短的说明。 OBEX有一个协议,它不只是原始发送文件。 我会稍后再写,但我们会看到类似的东西:

 CONNECT-> <-OK PUT+filename+data-> <-CONTINUE PUT+FINAL+data-> <-OK disconnect 

您必须实现obex协议连接,放置,断开操作才能执行此操作。 请参考此线程: 通过蓝牙Windows 10通用应用程序发送数据