【发布时间】:2015-05-04 04:33:59
【问题描述】:
我有一个项目,其中卡拉 OK 机记录用户,然后让用户通过蓝牙连接到机器,通过他/她的手机下载他们的录音。经过大量阅读、示例、文档,我尝试使用 32feet(卡拉 OK 是用 C# .NET 编写的),但我发现发送文件的唯一方法是使用 ObexWebResponse,有些手机没有该服务:
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");
}
}
调试器也显示:http://oi62.tinypic.com/e6rpkg.jpg
有没有 OBEX 的替代品?与每部手机兼容的东西,或与 OBEX 混合用于那些不兼容的设备的方法。
我已使用原生 Windows 应用程序 (控制面板 > 设备和打印机 > 蓝牙设备 > '设备名称' > 发送文件) 发送文件,所以这实际上不是硬件相关问题,如果有任何解决方案,即使是其他语言或库,请告诉我如何实现这一点。
提前感谢您抽出宝贵时间阅读!
【问题讨论】:
标签: c# .net bluetooth 32feet obex