某些手机不支持 C# 32feet obex 蓝牙
C# 32feet obex bluetooth not supported by some phones
我有一个卡拉 OK 机记录用户的项目,然后让用户使用 his/her phone 通过蓝牙连接到机器并下载他们的录音。在大量阅读、示例和文档之后,我尝试使用 32feet(卡拉 OK 是用 C# .NET 编写的),但我发现的唯一方法发送文件使用的是 ObexWebResponse,有些 phone 没有该服务:
http://oi62.tinypic.com/153s8p5.jpg(图片来自蓝牙OBEX文件传输)
这会导致程序抛出异常 (此代码是我从此处的答案中提取的示例,用于测试发送视频文件,然后取消对话框并使其更加自动一次用户将自己与卡拉 OK 机配对):
private void sendfile()
{
SelectBluetoothDeviceDialog dialog = new SelectBluetoothDeviceDialog();
dialog.ShowAuthenticated = true;
dialog.ShowRemembered = true;
dialog.ShowUnknown = true;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "Select File";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string m_pin = "";
Console.WriteLine(BluetoothSecurity.PairRequest(dialog.SelectedDevice.DeviceAddress, m_pin));
if (ofd.ShowDialog() == DialogResult.OK)
{
var uri = new Uri("obex://" + dialog.SelectedDevice.ToString() + "/" + ofd.FileName);
var request = new ObexWebRequest(uri);
request.ReadFile(ofd.FileName);
var response = (ObexWebResponse)request.GetResponse(); // << THIS THROWS AN EXCEPTION WITH THE ADDITIONAL INFORMATION: CONNECT FAILED.
response.Close();
}
else
{
MessageBox.Show("File Not Selected");
}
}
else
{
MessageBox.Show("Device Not Selected");
}
}
Debbuger 还显示:http://oi62.tinypic.com/e6rpkg.jpg
有没有OBEX的替代品?与每个 phone 兼容的东西,或者为那些不兼容的设备与 OBEX 混合的方法。
我已经使用本机 Windows 应用程序 (控制面板 > 设备和打印机 > 蓝牙设备 > 'device name' > 发送文件) 发送文件所以这不是一个真正与硬件相关的问题,如果即使在其他语言或库中也有任何解决方案,请给我一个关于如何实现这一目标的指导。
提前感谢您抽空阅读!
还没有因为我自己当前的 PC/Bluetooth 通信问题(目前使用 32feet 和 C#)而求助于此,但是我确实遇到了一个用于 C++ 的原生 Microsoft 库:https://msdn.microsoft.com/en-us/library/windows/desktop/aa362932%28v=vs.85%29.aspx
正如我所说,我自己没有尝试过,所以不能保证,但它可能值得一看?
我有一个卡拉 OK 机记录用户的项目,然后让用户使用 his/her phone 通过蓝牙连接到机器并下载他们的录音。在大量阅读、示例和文档之后,我尝试使用 32feet(卡拉 OK 是用 C# .NET 编写的),但我发现的唯一方法发送文件使用的是 ObexWebResponse,有些 phone 没有该服务:
http://oi62.tinypic.com/153s8p5.jpg(图片来自蓝牙OBEX文件传输)
这会导致程序抛出异常 (此代码是我从此处的答案中提取的示例,用于测试发送视频文件,然后取消对话框并使其更加自动一次用户将自己与卡拉 OK 机配对):
private void sendfile()
{
SelectBluetoothDeviceDialog dialog = new SelectBluetoothDeviceDialog();
dialog.ShowAuthenticated = true;
dialog.ShowRemembered = true;
dialog.ShowUnknown = true;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "Select File";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string m_pin = "";
Console.WriteLine(BluetoothSecurity.PairRequest(dialog.SelectedDevice.DeviceAddress, m_pin));
if (ofd.ShowDialog() == DialogResult.OK)
{
var uri = new Uri("obex://" + dialog.SelectedDevice.ToString() + "/" + ofd.FileName);
var request = new ObexWebRequest(uri);
request.ReadFile(ofd.FileName);
var response = (ObexWebResponse)request.GetResponse(); // << THIS THROWS AN EXCEPTION WITH THE ADDITIONAL INFORMATION: CONNECT FAILED.
response.Close();
}
else
{
MessageBox.Show("File Not Selected");
}
}
else
{
MessageBox.Show("Device Not Selected");
}
}
Debbuger 还显示:http://oi62.tinypic.com/e6rpkg.jpg
有没有OBEX的替代品?与每个 phone 兼容的东西,或者为那些不兼容的设备与 OBEX 混合的方法。
我已经使用本机 Windows 应用程序 (控制面板 > 设备和打印机 > 蓝牙设备 > 'device name' > 发送文件) 发送文件所以这不是一个真正与硬件相关的问题,如果即使在其他语言或库中也有任何解决方案,请给我一个关于如何实现这一目标的指导。
提前感谢您抽空阅读!
还没有因为我自己当前的 PC/Bluetooth 通信问题(目前使用 32feet 和 C#)而求助于此,但是我确实遇到了一个用于 C++ 的原生 Microsoft 库:https://msdn.microsoft.com/en-us/library/windows/desktop/aa362932%28v=vs.85%29.aspx
正如我所说,我自己没有尝试过,所以不能保证,但它可能值得一看?