Bluetooth 从定制的蓝牙设备向android手机发送命令以控制音乐播放器

Bluetooth 从定制的蓝牙设备向android手机发送命令以控制音乐播放器,bluetooth,arduino,headset,Bluetooth,Arduino,Headset,我使用以下组件创建了一个简单的蓝牙设备 HC05模块 Arduino Uno板(带可编程微控制器) 我想知道是否可以从我的BT设备发送命令,就像这些命令是从蓝牙耳机发送的一样 我的意思是: 我们发送0x00000055键码-音乐暂停 (按键编码\媒体\播放\暂停) 我们发送0x00000058-上一首歌曲开始播放 (键码\媒体\上一个) 以下是android使用的密钥码的完整列表: 我可能可以创建一个单独的应用程序,它将读取传入的命令并模拟耳机按钮的按下,但这不是我想要的。就我而言,有

我使用以下组件创建了一个简单的蓝牙设备

  • HC05模块
  • Arduino Uno板(带可编程微控制器)
我想知道是否可以从我的BT设备发送命令,就像这些命令是从蓝牙耳机发送的一样

我的意思是:

  • 我们发送0x00000055键码-音乐暂停 (按键编码\媒体\播放\暂停)
  • 我们发送0x00000058-上一首歌曲开始播放 (键码\媒体\上一个)
以下是android使用的密钥码的完整列表:

我可能可以创建一个单独的应用程序,它将读取传入的命令并模拟耳机按钮的按下,但这不是我想要的。就我而言,有些耳机是即插即用的,这意味着android设备上不需要安装额外的应用程序。以下是我目前用于向Android手机发送命令的代码:

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // RX | TX

enum { LED_PIN = 6 };
enum LedState { LED_ON, LED_OFF, LED_BLINK };

LedState led_state;

void setup()
{
  led_state = LED_OFF;
  pinMode(LED_PIN, OUTPUT);

  pinMode(9, OUTPUT);
  digitalWrite(9, LOW);
  Serial.begin(9600);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
}

const int COMMAND_MUSIC = 85;

void loop()
{
digitalWrite(LED_PIN, HIGH);
delay(100);
digitalWrite(LED_PIN, LOW);
delay(100);

delay(10000);

// trying to play or pause once in 10 seconds
BTSerial.write(0x00000055);
//BTSerial.print(0x00000055, HEX);

}
#包括
软件串行BTSerial(10,11);//RX | TX
枚举{LED_PIN=6};
枚举发光二极管状态{LED_打开,LED_关闭,LED_闪烁};
LedState LEDU state;
无效设置()
{
led_状态=led_关闭;
引脚模式(LED_引脚,输出);
pinMode(9,输出);
数字写入(9,低);
Serial.begin(9600);
Serial.println(“Enter AT commands:”);
BTSerial.begin(38400);//HC-05 AT命令中的默认速度更多
}
const int COMMAND_MUSIC=85;
void循环()
{
数字写入(LED_引脚,高);
延迟(100);
数字写入(LED_引脚,低电平);
延迟(100);
延迟(10 000);
//试图在10秒内播放或暂停一次
BTSerial.write(0x00000055);
//BTSerial.print(0x00000055,十六进制);
}

两台设备都已配对,但我手机上的音乐播放器不受这些命令的影响。是否可以在不为“来自BT的传入命令”创建附加应用程序的情况下控制音乐播放器?

问题是,您的主板是否支持AVRCP控制器BT配置文件

如果是这样,您“只”需要根据您的手机连接AVRCP目标BT配置文件。当你有一个AVRCP BT连接时,有指定的命令如何暂停和跳过歌曲

这就是“即插即用”耳机的工作原理

阅读更多有关蓝牙配置文件的信息。

查看您的代码,您已经设置了指向手机的串行链接。 此链接使用SPP配置文件,您将只能通过该链接发送原始数据。 如果这是Arduino Uno板上BT堆栈的唯一配置文件,您将被迫在手机端创建一个应用程序,以便能够读取原始数据并对其进行处理,例如暂停音乐


希望这对你来说没什么大不了的

也许你已经晚了,但也许我可以帮助别人

首先,蓝牙设备如BT耳机、键盘等被称为HID(人机界面设备)。HC05不是现成的,但Evan Kale(链接:)介绍了一种解决方案,即如何使用串行端口连接更新其中一个

另一个解决方案是购买BT HID模块,但价格更高(约10倍)