从定制的蓝牙设备发送命令到 Android 手机来控制音乐播放器

Ale*_*lex 6 bluetooth arduino headset

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

  • HC05模块
  • Arduino Uno 板(带有可重新编程的微控制器)

我想知道是否可以从我的 BT 设备发送命令,就像这些命令是从蓝牙耳机发送的一样?

我的意思是:

  • 我们发送 0x00000055 键码 - 音乐暂停 (KEYCODE_MEDIA_PLAY_PAUSE)
  • 我们发送 0x00000058 - 上一首歌曲开始播放 (KEYCODE_MEDIA_PREVIOUS)
  • ...

以下是 android 使用的键码的完整列表:http://developer.android.com/reference/android/view/KeyEvent.html

我可能可以创建一个单独的应用程序,它将读取传入的命令并模拟耳机按钮的按下,但这不是我想要的。就我而言 - 一些耳机是即插即用的,这意味着 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);

}
Run Code Online (Sandbox Code Playgroud)

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

har*_*mar 4

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

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

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

了解有关蓝牙配置文件的更多信息。 http://en.wikipedia.org/wiki/Bluetooth_profile

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

希望这对你来说没什么意义。