标签: bluetooth

手机可以假装是蓝牙键盘吗?

如果用于模拟蓝牙键盘或鼠标的iPhone/Android应用程序,它似乎非常有用.例如,你打开应用程序,突然你可以在你的iPhone键盘和PC/PS3 /等上打字.与它配对就好像它是一个蓝牙键盘并接收打字的字母.

这个想法对我来说似乎很直观,我认为它不存在的唯一原因是它不可能,但我不明白为什么它不可能.

是否存在蓝牙限制,导致设备无法模拟其他类型的设备?或者,iOS或Android暴露的API的限制可能会抑制这种情况?

编辑:看起来iPhone蓝牙API相当有限,因为您只能与Apple许可的配件进行通信:是否可以开发具有蓝牙功能的iOS应用程序? 这可能会排除其他类型设备仿真的任何内容.但问题仍然是针对Android开放的.

android bluetooth ios

27
推荐指数
2
解决办法
3万
查看次数

Windows 10上使用32feet.NET的蓝牙配对(SSP)

我刚开始一个项目,要求我将Windows 10平板电脑与另一个蓝牙设备配对.

我决定从一个简单的Windows窗体应用程序开始,熟悉这个过程.我在我的解决方案中添加了32feet.NET NuGet包,并且很快就成功搜索了设备并填充了列表框.

client = new BluetoothClient();
devices = client.DiscoverDevices();
if (devices.Length > 0)
{
    foreach (var device in devices)
    {
        lstBTDevices.Items.Add(device.DeviceName);
    }
}
else
{
    MessageBox.Show("Unable to detect any bluetooth devices");
}
Run Code Online (Sandbox Code Playgroud)

然后我添加了一个事件处理程序,以便我可以选择一个检测到的设备并尝试与它配对.

    private void LstBTDevices_SelectedIndexChanged(object sender, EventArgs e)
    {
        BluetoothDeviceInfo selectedDevice = devices[lstBTDevices.SelectedIndex];
        if (MessageBox.Show(String.Format("Would you like to attempt to pair with {0}?", selectedDevice.DeviceName), "Pair Device", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            if (BluetoothSecurity.PairRequest(selectedDevice.DeviceAddress, "123456"))
            {
                MessageBox.Show("We paired!");
            }
            else
            {
                MessageBox.Show("Failed to pair!");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我的带有廉价蓝牙2.0适配器的Windows7台式电脑上,这会导致我的手机上出现一个弹出窗口,要求我输入密码.当我输入"123456"时,配对成功.

但是,这就是问题的起点.然后我拿起我的应用程序并在我的Windows10平板电脑上运行它,现在当我选择我的手机时,它会在我的手机上显示一个弹出窗口,其中包含一个随机的6位数密码,并显示一条消息,它应该与我平板电脑屏幕上显示的内容相匹配,配对/取消按钮作为选项.按任一按钮都会导致失败. …

c# bluetooth 32feet

27
推荐指数
1
解决办法
5562
查看次数

Java:异常本身为null

我很困惑它自己的android问题或Java问题.

当我调试一个与蓝牙一起工作的android应用程序时,流程停在了一个catch块上IOException,后来我发现异常e为null ....当我试图从InputStream读取时抛出它

是的,它不是一个NullPointerException但是其他类型的异常是空的 - 更好的说抛出未初始化.

可能吗?在哪种情况下可以抛出这种单元化异常?

一个例外是null ....它不是一个空指针异常

java null android bluetooth ioexception

26
推荐指数
2
解决办法
5494
查看次数

什么触发了BluetoothDevice.ACTION_ACL广播?

我想知道远程物理设备中的哪些事件在监听设备中触发ACTION_ACL_CONNECTED和ACTION_ACL_DISCONNECTED.我的测试结果毫无意义.我已经在几分之一的范围内收集了几个设备:

运行Android 3.1的Galaxy Tab P7500

运行Android 2.2的i5500手机

带有蓝牙USB加密狗的PC winXP

两个带开/关按钮的耳机

首先,我手动配对Tab中的所有设备.除了Tab之外,PC和手机都没有与任何其他设备配对.(标签永远不会以任何方式找到其中一个耳机,但可以通过手动和编程方式轻松找到它.然后我有一个简单的应用程序来启动发现,并监听和显示ACL广播.这就是发生的事情(每次都是一样的,它的疯狂一致):

  • 来自Tab的startDiscovery()启用了所有设备: - PC是唯一找到的设备
  • 在PC上禁用蓝牙: - 选项卡上没有反应
  • 在PC上启用蓝牙: - 选项卡上没有反应

  • 首次打开耳机电源: - 选项卡上的ACTION_ACL_CONNECTED

  • 关闭耳机电源: - 标签上没有反应
  • 再次打开耳机: - 选项卡上的ACTION_ACL_DISCONNECTED和ACTION_ACL_CONNECTED快速连续

  • 禁用选项卡上的蓝牙: - 选项卡上没有反应

  • 在选项卡上启用蓝牙: - 选项卡上的耳机ACTION_ACL_CONNECTED

  • 来自手机的startDiscovery(): - PC是手机找到的唯一设备,虽然手机只与Tab配对,而不是与PC配对.否则,手机只会响应Tab从不作出反应的耳机.

怎么弄出这个烂摊子?即使配对并在范围内上电,也不能依赖导致ACTION_ACL_CONNECT的设备吗?

以下是BroadcastReceiver和onCreate活动的方法,但我不认为此代码中的细节很重要:

BroadcastReceiver intentReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
        if (device != null) {
            name = device.getName();
        Log.v(TAG, "Device=" + device.getName());
        }
        else {
            name = "None";
        } …
Run Code Online (Sandbox Code Playgroud)

android bluetooth device broadcastreceiver

26
推荐指数
1
解决办法
1万
查看次数

Android:蓝牙打印

我必须为Android平板电脑开发一款App,要求将文件打印到蓝牙打印机.通过蓝牙打印是我的应用程序最重要的功能之一.不幸的是,关于这个主题的信息并不多,所以我想征求意见.

据我所知,不可能在Android上使用蓝牙打印(使用本机调用),因为Android的BT Stack不实现BPP(基本打印配置文件).做一点研究我发现了以下替代方案:

软件开发工具包/库

  • Sybase-iAnywhere-Blue-SDK-for-Android:支持大量BT配置文件的商业SDK.由一家大公司开发(我猜是很好的支持).我还没有找到很多关于这个的信息.是否有一些关于如何使用此SDK的文档,API或示例?有谁知道如何下载演示版?(上次我试过时链接好像坏了)
  • iPrint SDK:商业SDK.他们网站上的一些例子,但没有别的.
  • Zebralink:仅适用于Zebra打印机(自然).其他制造商也可能为其打印机提供API.

Google Play应用

  • PrinterShare:商业(高级密钥)
  • 蓝牙智能打印:自由轻巧.声称打印到蓝牙打印机.

理想情况下,我不希望被绑定到特定的品牌或打印机型号.现在的问题是:

  • 您认为这是最佳选择?
  • 你知道我错过的其他选择吗?
  • 我可以使用外部应用程序从我的应用程序轻松打印文件吗?
  • 我的文件应该用什么格式才能通过蓝牙打印?(PDF,图像等).
  • 有关打印机制造商和型号的任何建议吗?
  • 您是否有在Android上通过蓝牙打印的真实体验?
  • 是否有计划在不久的将来在Android上实施蓝牙打印?

在此先感谢您的帮助 ;)

android bluetooth

26
推荐指数
1
解决办法
3万
查看次数

通过A2DP/AVRCP发送跟踪信息

我正在尝试通过A2DP/AVRCP发送跟踪信息.现在,音乐完全流式传输,但在"接收器"(即:汽车音频)上,"音轨信息屏幕"是空白的(在那里使用流行的播放器不是这种情况).任何的想法 ?

android bluetooth avrcp a2dp

26
推荐指数
3
解决办法
2万
查看次数

如何通过蓝牙将音频从一个Android设备流式传输到另一个Android设备?

是否可以通过蓝牙传输音频?在我的研究过程中,我发现它只能使用A2DP(Advanced Audio Distribution Profile).每个Android设备都支持A2DP吗?如果没有,是否可以使用蓝牙在两个Android设备之间传输音频?请帮我理解这个.

我查看了以下链接:

android bluetooth audio-streaming a2dp android-bluetooth

26
推荐指数
1
解决办法
4万
查看次数

将蓝牙设备与具有32英尺.NET蓝牙库的计算机配对

如果您想知道如何使用32feet.NET库与蓝牙设备通信,请阅读解决方案


我目前正在尝试通过蓝牙在计算机和自建的.NET Gadgeteer原型之间进行通信.

Gadgeteer原型包括主板,电源和蓝牙模块.模块处于可发现模式.

在计算机上,基于32feet .NET蓝牙的自定义蓝牙程序正在运行.程序检测范围内的所有蓝牙设备并尝试与它们配对.但是,目前还没有自动完成,我必须输入设备的配对代码.

如何在不输入配对代码的情况下配对设备?

找到设备,问题是配对部分.我做了很多实验,但没有找到解决方案......

foreach (BluetoothDeviceInfo device in this.deviceList)
{
    try
    {
        //BluetoothClient client = new BluetoothClient(this.CreateNewEndpoint(localAddress));
        //BluetoothEndPoint ep = this.CreateNewEndpoint(device.DeviceAddress);

        EventHandler<BluetoothWin32AuthenticationEventArgs> handler = new EventHandler<BluetoothWin32AuthenticationEventArgs>(HandleRequests);
        BluetoothWin32Authentication auth = new BluetoothWin32Authentication(handler);

        BluetoothSecurity.PairRequest(device.DeviceAddress, null);
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码块启动配对并且它可以工作,但Windows要求我输入设备的配对代码.我读到了关于BluetoothWin32Authentication以防止这种情况,但我没有把它弄好.

private void HandleRequests(object that, BluetoothWin32AuthenticationEventArgs e)
{
    e.Confirm = true;
}
Run Code Online (Sandbox Code Playgroud)

这是事件处理程序的代码(http://32feet.codeplex.com/wikipage?title=BluetoothWin32Authentication)

如果你只想让SSP设备连接时允许配对继续,那么处理回调和设置e.Confirm = True就足够了 - 但这有点不安全......


我很困惑-.-目标是应用程序和gadgeteer模块可以在没有任何用户干扰的情况下向两个方向发送数据.

没有用户交互,我无法自动配对设备吗?

是否真的如果两个设备已经配对,他们可以在没有用户交互的情况下交换数据?

c# bluetooth .net-gadgeteer 32feet

26
推荐指数
1
解决办法
6万
查看次数

startLeScan替换为当前的api

目标是读取蓝牙LE心率监测器的值.

使用谷歌的样本,我明白了

private void scanLeDevice(final boolean enable) {
    if (enable) {
        // Stops scanning after a pre-defined scan period.
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mScanning = false;
                mBluetoothAdapter.stopLeScan(mLeScanCallback);
            }
        }, SCAN_PERIOD);

        mScanning = true;
        mBluetoothAdapter.startLeScan(mLeScanCallback);
    } else {
        mScanning = false;
        mBluetoothAdapter.stopLeScan(mLeScanCallback);
    }
}
Run Code Online (Sandbox Code Playgroud)

导致mBluetoothAdapter.stopLeScan显示为已弃用.但是Startscan不是方法mBluetoothAdapter.

如何更改它以使其与当前API一起使用?

android bluetooth bluetooth-lowenergy

26
推荐指数
5
解决办法
3万
查看次数

Android:BluetoothSocket收到自己的输出

我有一个通过蓝牙连接到RaspberryPi的应用程序,并在收到一些数据时将相同的数据循环到它.

我有一些连接问题,所以需要这个解决方法将我的Android手机连接到RaspberryPi:IOException:读取失败,套接字可能关闭 - Android 4.3上的蓝牙

由于某种原因,Android手机正在接收自己的输出.字符串"Hello Raspberry.这是我,AndroidPhone"以永无止境的循环发送到输出.传入的数据(来自RaspberryPi)也在一个永无止境的循环中读取.

但不知何故,我不仅收到RaspberryPi的数据,还收到通过智能手机发送的字符串.这是我的代码:

public class MainActivity extends AppCompatActivity {
    private BluetoothAdapter bluetoothAdapter;
    UUID SERIAL_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // (...)
        // Only GUI-stuff until this point

        bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothDevice raspberryPi = bluetoothAdapter.getRemoteDevice("B8:27:EB:56:DC:B2");
        BluetoothSocket btSocket;

        try {
            btSocket = raspberryPi.createRfcommSocketToServiceRecord(SERIAL_UUID);
            btSocket.connect();
        } catch (IOException e) {
            Log.e("BTError", e.getMessage());
            // Workaround, found on: https://stackoverflow.com/questions/18657427/ioexception-read-failed-socket-might-closed-bluetooth-on-android-4-3
            try {
                Log.e("BTError", "Trying fallback...");
                btSocket = (BluetoothSocket) raspberryPi.getClass().getMethod("createRfcommSocket", new Class[]{int.class}).invoke(raspberryPi, 1);
                btSocket.connect();

                (new Thread(new …
Run Code Online (Sandbox Code Playgroud)

java io android bluetooth stream

26
推荐指数
1
解决办法
401
查看次数