1 page.title=Stylus 2 @jd:body 3 4 <!-- 5 Copyright 2015 The Android Open Source Project 6 7 Licensed under the Apache License, Version 2.0 (the "License"); 8 you may not use this file except in compliance with the License. 9 You may obtain a copy of the License at 10 11 http://www.apache.org/licenses/LICENSE-2.0 12 13 Unless required by applicable law or agreed to in writing, software 14 distributed under the License is distributed on an "AS IS" BASIS, 15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 See the License for the specific language governing permissions and 17 limitations under the License. 18 --> 19 20 <div id="qv-wrapper"> 21 <div id="qv"> 22 <h2>In this document</h2> 23 <ol id="auto-toc"> 24 </ol> 25 </div> 26 </div> 27 28 <p>Android 6.0 and higher supports a standard data format for Bluetooth stylus 29 connections over Bluetooth (BT), Bluetooth Low Energy (BTLE), or USB. The 30 platform correlates timing between touch input and stylus data then provides 31 stylus data to render MotionEvents to the active application. The following 32 sections provide guidelines for OEM partners, stylus accessory creators, and 33 stylus application developers.</p> 34 35 <h2 id="guide-partners">Guidelines for OEM partners</h2> 36 <p>To enable Bluetooth stylus support, OEM partners must support Bluetooth 37 (and should support BTLE for wider compatibility). The platform handles data 38 collection, timing correlation, and rendering to the application for supported 39 stylus events.</p> 40 41 <p>At this time, the Android CTS <strong>does not</strong> include tests to 42 ensure existing APIs for touch events support default behavior. As a 43 workaround, we recommend creating a stylus accessory or emulator that can 44 simulate stylus events.</p> 45 46 <h2 id="guide-creators">Guidelines for stylus accessory creators</h2> 47 <p>To implement support on a stylus device, partners must use the Stylus 48 Human Interface Device (HID) Descriptor shown below to describe how stylus data 49 (pressure sensitivity, eraser, side buttons, device ID, etc.) is represented. 50 The stylus device sends the HID information to the Android mobile device, 51 enabling the platform to correlate HID data with touch data from the touchscreen 52 to produce stylus events via MotionEvent. Data can be sent over Bluetooth (BT), 53 Bluetooth Low Energy (BTLE), or USB.</p> 54 55 <h3 id="hid-descriptor">HID descriptor</h3> 56 57 <p><pre> 58 UsagePage(Digitizer) 59 Usage(Pen) 60 Collection(Application) 61 Usage(Stylus) 62 Collection(Logical) 63 Usage(Tip Pressure) 64 Logical Minimum(0) 65 Logical Maximum(1023) 66 Report Count(1) 67 Report Size(10) 68 Input(Data, Variable, Absolute, No Null) 69 70 Usage(Barrel Switch) 71 Usage(Secondary Barrel Switch) 72 Usage(Tip Switch) 73 Usage(Invert) 74 Logical Maximum(1) 75 Report Count(4) 76 Report Size(1) 77 Input(Data, Variable, Absolute, No Null) 78 79 Usage(Transducer Serial Number) 80 Report Count(1) 81 Report Size(128) 82 Feature(Constant, Variable) 83 EndCollection 84 EndCollection 85 86 unsigned char HID_DESC[] = { 87 0x05, 0x0D, // UsagePage(Digitizer) 88 0x09, 0x02, // Usage(Pen) 89 0xA1, 0x01, // Collection(Application) 90 0x09, 0x20, // Usage(Stylus) 91 0xA1, 0x02, // Collection(Logical) 92 0x09, 0x30, // Usage(Tip Pressure) 93 0x15, 0x00, // Logical Minimum(0) 94 0x26, 0xFF, 0x03, // Logical Maximum(1023) 95 0x95, 0x01, // Report Count(1) 96 0x75, 0x0A, // Report Size(10) 97 0x81, 0x02, // Input(Data, Variable, Absolute, No Null) 98 99 0x09, 0x44, // Usage(Barrel Switch) 100 0x09, 0x5A, // Usage(Secondary Barrel Switch) 101 0x09, 0x42, // Usage(Tip Switch) 102 0x09, 0x3C, // Usage(Invert) 103 0x25, 0x01, // Logical Maximum(1) 104 0x95, 0x04, // Report Count(4) 105 0x75, 0x01, // Report Size(1) 106 0x81, 0x02, // Input(Data, Variable, Absolute, No Null) 107 108 0x09, 0x5B, // Usage(Transducer Serial Number) 109 0x95, 0x01, // Report Count(1) 110 0x75, 0x80, // Report Size(128) 111 0xB1, 0x03, // Feature(Constant, Variable) 112 0xC0, // End Collection 113 0xC0, // End Collection 114 } 115 </pre></p> 116 117 <h2 id="guidelines-devs">Guidelines for stylus application developers</h2> 118 <p>The Android 6.0 platform automatically handles pairing and event correlation, 119 so both existing and new applications running on Android 6.0 support Bluetooth 120 stylus by default. For details on Bluetooth stylus APIs, refer to 121 <a href="http://developer.android.com/about/versions/marshmallow/android-6.0.html#bluetooth-stylus">developer.android.com</a>.