Kết nối và ngắt kết nối với các thiết bị Bluetooth đã mang lại nhiều kết quả khác nhau trên Windows Phone / Desktop 8.1. Tôi đã sử dụngWindows.Devices.Bluetooth.Rfcomm
không gian tên và tôi đã cố gắng kết nối một số thiết bị với các phiên bản / lớp Bluetooth khác nhau.
- Phiên bản 1.2 (Lớp 1 và 2)
- Phiên bản 2.0 (Lớp 1 và 2)
- Phiên bản 2.1 (Lớp 1 và 2)
- Đã thử nghiệm trên Nokia Lumia 625 và Lumia 635, Dell Latitude E6500 và Dell Precision M6400.
Bất cứ khi nào tôi cố gắng kết nối với một trong hai thiết bị 2.0 hoặc 2.1 đều có vấn đề. Lần đầu tiên tôi cố gắng kết nối với từng thiết bị, mọi thứ sẽ diễn ra tốt đẹp và kết nối sẽ mở. Sau đó, khi tôi đóng kết nối và kết nối lại thiết bị, sự cố bắt đầu. Trong quá trình kết nối lại, kết nối sẽ không bao giờ mở và trình gỡ lỗi sẽ ném ra một Hệ thống.
> Message: No further data is available.
Ngoài ra, khi kết nối không thành công, các thiết bị Windows 8.1 sẽ tiếp tục cố gắng (không thành công) tự kết nối với Thiết bị Bluetooth, ngay cả khi ứng dụng của riêng tôi bị chấm dứt. Đôi khi thiết bị Windows 8.1 cũng sẽ hiển thị thiết bị Bluetooth là đã kết nối, trong khi thiết bị này hiển thị trực quan rằng thiết bị không được kết nối nữa. Cách duy nhất để kết nối lại thiết bị Bluetooth là hủy ghép nối thiết bị và tắt / khởi động lại Bluetooth trên thiết bị Windows.
Bất cứ khi nào tôi cố gắng thực hiện cuộc gọi mới DeviceInformation
sau khi kết nối không thành công, nó sẽ từ chối trả lại thiết bị mà tôi đã cố kết nối trước đó.
> Message: The service cannot be found in the specified name space.
Kết quả kỳ lạ, 1,2 thiết bị hoạt động hoàn hảo.
Tệp kê khai:
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="any">
<m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
</m2:Device>
</m2:DeviceCapability>
Chọn thiết bị:
Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid)));
Đang kết nối: (id = chatserviceid)
StreamSocket _socket;
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(deviceInformation1._id);
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);
Đang ngắt kết nối:
this._socket.Dispose();
this._socket = null;
Tôi đã nghiên cứu MSDN, các mẫu mã, bản demo, video channel-9 và StackOverflow, không tài nguyên nào có thể cho tôi biết nếu có vấn đề với Windows.Devices.Bluetooth.Rfcomm
.
Có ai đó nhận ra những kết quả kỳ quặc này không? Tôi có làm điều gì sai?
CẬP NHẬT: Làm việc với Windows Phone 8.1 GDR2 là một giải pháp khả thi.
LƯU Ý: Đối với tôi và một số người khác, bản cập nhật này vẫn đưa ra các vấn đề tương tự.