Android 远程控制设备的HID描述符

Android 远程控制设备的HID描述符,android,bluetooth,hid,television,Android,Bluetooth,Hid,Television,我正在Android上开发一个远程控制应用程序 这是我的密码。我能够发送关键事件:音量下降/上升、dpad中心/上升/下降/左/右 private static final byte[]报告\u映射\u远程\u工作={ 用法页面,0x0c,//用法页面(消费设备) 用法,0x01,//用法(使用者控件) 集合,0x01,//集合(应用程序) 报表ID,0x01,///报表ID 逻辑最小值,0x00,///逻辑最小值(0) 逻辑最大值,0x01,///逻辑最大值(1) //音量增大-0字节0位-0

我正在Android上开发一个远程控制应用程序

这是我的密码。我能够发送关键事件:音量下降/上升、dpad中心/上升/下降/左/右

private static final byte[]报告\u映射\u远程\u工作={
用法页面,0x0c,//用法页面(消费设备)
用法,0x01,//用法(使用者控件)
集合,0x01,//集合(应用程序)
报表ID,0x01,///报表ID
逻辑最小值,0x00,///逻辑最小值(0)
逻辑最大值,0x01,///逻辑最大值(1)
//音量增大-0字节0位-0x01
用法,(字节)0xe9,
//音量下降-0字节1位-0x02
用法,(字节)0xea,
报告大小,0x01,
报告计数,0x02,
输入,0x06,//输入(数据,变量,相对)
//DPAD中心-0字节2位-0x04
用法,(字节)0x41,
报告计数,计数01,
输入,0x06,//输入(数据,变量,相对)
//DPAD UP-0字节3位-0x08
用法,(字节)0x42,
报告计数,计数01,
输入,0x06,//输入(数据,变量,相对)
//DPAD向下-0字节4位-0x10
用法,(字节)0x43,
报告计数,计数01,
输入,0x06,//输入(数据,变量,相对)
//DPAD左-0字节5位-0x20
用法,(字节)0x44,
报告计数,计数01,
输入,0x06,//输入(数据,变量,相对)
//DPAD右-0字节6位-0x40
用法,(字节)0x45,
报告计数,计数01,
输入,0x06,//输入(数据,变量,相对)
//音量静音-0字节7位-0x80
用法,(字节)0xe2,
报告计数,计数01,
输入,0x06,//输入(数据,变量,相对)
结束集合,//结束集合
};

我如何编辑此描述符,以便能够发送事件,这些事件与任何遥控器上的相应颜色按钮(红色、绿色、黄色、蓝色)相同?

消费者页面上也使用红色/绿色/蓝色/黄色按钮。 试试这个:

//--------------------------------------------------------------------------------
// Report descriptor data in hex (length 47 bytes)
//--------------------------------------------------------------------------------


// 050C0901 A1018501 15002501 09E909EA 09410942 09430944 094509E2 0969096A
// 096B096C 7501950C 81069504 8101C0    


//--------------------------------------------------------------------------------
// Decoded Application Collection
//--------------------------------------------------------------------------------

/*
05 0C        (GLOBAL) USAGE_PAGE         0x000C Consumer Device Page 
09 01        (LOCAL)  USAGE              0x000C0001 Consumer Control (Application Collection)  
A1 01        (MAIN)   COLLECTION         0x01 Application (Usage=0x000C0001: Page=Consumer Device Page, Usage=Consumer Control, Type=Application Collection)
85 01          (GLOBAL) REPORT_ID          0x01 (1)  
15 00          (GLOBAL) LOGICAL_MINIMUM    0x00 (0)  <-- Info: Consider replacing 15 00 with 14
25 01          (GLOBAL) LOGICAL_MAXIMUM    0x01 (1)  
09 E9          (LOCAL)  USAGE              0x000C00E9 Volume Increment (Re-trigger Control)  
09 EA          (LOCAL)  USAGE              0x000C00EA Volume Decrement (Re-trigger Control)  
09 41          (LOCAL)  USAGE              0x000C0041 Menu Pick (One Shot Control)  
09 42          (LOCAL)  USAGE              0x000C0042 Menu Up (One Shot Control)  
09 43          (LOCAL)  USAGE              0x000C0043 Menu Down (One Shot Control)  
09 44          (LOCAL)  USAGE              0x000C0044 Menu Left (One Shot Control)  
09 45          (LOCAL)  USAGE              0x000C0045 Menu Right (One Shot Control)  
09 E2          (LOCAL)  USAGE              0x000C00E2 Mute (On/Off Control)  
09 69          (LOCAL)  USAGE              0x000C0069 Red Menu Button (Momentary Control)  
09 6A          (LOCAL)  USAGE              0x000C006A Green Menu Button (Momentary Control)  
09 6B          (LOCAL)  USAGE              0x000C006B Blue Menu Button (Momentary Control)  
09 6C          (LOCAL)  USAGE              0x000C006C Yellow Menu Button (Momentary Control)  
75 01          (GLOBAL) REPORT_SIZE        0x01 (1) Number of bits per field  
95 0C          (GLOBAL) REPORT_COUNT       0x0C (12) Number of fields  
81 06          (MAIN)   INPUT              0x00000006 (12 fields x 1 bit) 0=Data 1=Variable 1=Relative 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
95 04          (GLOBAL) REPORT_COUNT       0x04 (4) Number of fields  
81 01          (MAIN)   INPUT              0x00000001 (4 fields x 1 bit) 1=Constant 0=Array 0=Absolute 
C0           (MAIN)   END_COLLECTION     Application 
*/

//--------------------------------------------------------------------------------
// Consumer Device Page inputReport 01 (Device --> Host)
//--------------------------------------------------------------------------------

typedef struct
{
  uint8_t  reportId;                                 // Report ID = 0x01 (1)
                                                     // Collection: CA:ConsumerControl
  uint8_t  CD_ConsumerControlVolumeIncrement : 1;    // Usage 0x000C00E9: Volume Increment, Value = 0 to 1
  uint8_t  CD_ConsumerControlVolumeDecrement : 1;    // Usage 0x000C00EA: Volume Decrement, Value = 0 to 1
  uint8_t  CD_ConsumerControlMenuPick : 1;           // Usage 0x000C0041: Menu Pick, Value = 0 to 1
  uint8_t  CD_ConsumerControlMenuUp : 1;             // Usage 0x000C0042: Menu Up, Value = 0 to 1
  uint8_t  CD_ConsumerControlMenuDown : 1;           // Usage 0x000C0043: Menu Down, Value = 0 to 1
  uint8_t  CD_ConsumerControlMenuLeft : 1;           // Usage 0x000C0044: Menu Left, Value = 0 to 1
  uint8_t  CD_ConsumerControlMenuRight : 1;          // Usage 0x000C0045: Menu Right, Value = 0 to 1
  uint8_t  CD_ConsumerControlMute : 1;               // Usage 0x000C00E2: Mute, Value = 0 to 1
  uint8_t  CD_ConsumerControlRedMenuButton : 1;      // Usage 0x000C0069: Red Menu Button, Value = 0 to 1
  uint8_t  CD_ConsumerControlGreenMenuButton : 1;    // Usage 0x000C006A: Green Menu Button, Value = 0 to 1
  uint8_t  CD_ConsumerControlBlueMenuButton : 1;     // Usage 0x000C006B: Blue Menu Button, Value = 0 to 1
  uint8_t  CD_ConsumerControlYellowMenuButton : 1;   // Usage 0x000C006C: Yellow Menu Button, Value = 0 to 1
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
  uint8_t  : 1;                                      // Pad
} inputReport01_t;
//--------------------------------------------------------------------------------
//十六进制报告描述符数据(长度47字节)
//--------------------------------------------------------------------------------
//050C0901 A1018501 15002501 09E909EA 09410942 09430944 094509E2 0969096A
//096B096C 7501950C 81069504 8101C0
//--------------------------------------------------------------------------------
//解码应用程序集合
//--------------------------------------------------------------------------------
/*
05 0C(全球)使用情况\u页面0x000C消费设备页面
09 01(本地)使用0x000C0001用户控制(应用程序收集)
A1 01(主)集合0x01应用程序(用法=0x000C0001:页面=用户设备页面,用法=用户控件,类型=应用程序集合)
85 01(全球)报告编号0x01(1)
15 00(全局)逻辑\u最小0x00(0)主机)
//--------------------------------------------------------------------------------
类型定义结构
{
uint8\u t reportId;//报告ID=0x01(1)
//收集:CA:ConsumerControl
uint8\u t CD\u ConsumerControlVolumeIncrement:1;//用法0x000C00E9:卷增量,值=0到1
uint8\u t CD\u ConsumerControlVolumeDecrement:1;//用法0x000C00EA:音量递减,值=0到1
uint8\u t CD\u ConsumerControlMenuPick:1;//用法0x000C0041:菜单拾取,值=0到1
uint8\u t CD\u ConsumerControl菜单:1;//用法0x000C0042:菜单向上,值=0到1
uint8\u t CD\u ConsumerControl菜单下:1;//用法0x000C0043:菜单下,值=0到1
uint8\u t CD\u ConsumerControlMenuLeft:1;//用法0x000C0044:菜单左侧,值=0到1
uint8\u t CD\u ConsumerControlMenuRight:1;//用法0x000C0045:菜单右键,值=0到1
uint8\u t CD\u ConsumerControlMute:1;//用法0x000C00E2:Mute,值=0到1
uint8_t CD_ConsumerControlRedMenuButton:1;//用法0x000C0069:红色菜单按钮,值=0到1
uint8_t CD_ConsumerControl绿色菜单按钮:1;//用法0x000C006A:绿色菜单按钮,值=0到1
uint8_t CD_ConsumerControl蓝色菜单按钮:1;//用法0x000C006B:蓝色菜单按钮,值=0到1
uint8_t CD_ConsumerControlyLowMenuButton:1;//用法0x000C006C:黄色菜单按钮,值=0到1
uint8\u t:1;//焊盘
uint8\u t:1;//焊盘
uint8\u t:1;//焊盘
uint8\u t:1;//焊盘
}输入报告01_t;

它对我不起作用。有了这个描述符,我可以发送事件:音量下降/上升、菜单拾取/上升/下降/左/右,但不能发送红、绿、蓝和黄按钮。此外,我在消费者页面中没有找到用法id:69、6A、6B、6C:颜色按钮在一个名为“审查请求36:消费者电子设备(颜色按钮)”的单独文档中定义。(显然,委员会很难在say github上维护一个简单的用法表,这样我们都可以看到什么发生了变化,什么时候发生了变化)