某些手机不支持C#32英尺obex蓝牙

本文关键字:英尺 obex 蓝牙 C#32 不支持 手机 | 更新日期: 2024-09-24 08:24:39

我有一个项目,卡拉OK机记录用户,然后让用户用手机通过蓝牙连接到机器并下载他们的录音。经过大量的阅读、示例和文档,我尝试使用32英尺(卡拉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");
        }
    }

Debbuger还显示:http://oi62.tinypic.com/e6rpkg.jpg

有没有OBEX的替代方案?与每部手机兼容的东西,或者为那些不兼容的设备混合使用OBEX的方法。

我使用了本机Windows应用程序(控制面板>设备和打印机>蓝牙设备>"设备名称">发送文件)来发送文件,所以这实际上不是一个与硬件相关的问题,如果有任何解决方案,即使是其他语言或库,请告诉我如何实现这一点。

提前感谢您的阅读时间!

某些手机不支持C#32英尺obex蓝牙

由于我目前的PC/蓝牙通信问题(目前使用32英尺和C#),我还没有采用这种方法,但我确实遇到了一个用于C++的本地Microsoft库:https://msdn.microsoft.com/en-us/library/windows/desktop/aa362932%28v=vs.85%29.aspx

正如我所说,我自己没有尝试过,所以不能保证,但它可能值得一看?