我有一个项目,卡拉 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 应用程序(控制面板 > 设备和打印机 > 蓝牙设备 > '设备名称' > 发送文件)发送文件,所以这不是硬件相关的问题,即使有其他语言的解决方案或图书馆请给我一个关于如何做到这一点的方向。
提前感谢您的阅读时间!