Android 6.0 ve sonraki sürümlerde, Bluetooth (BT), Bluetooth Düşük Enerji (BTLE) veya USB üzerinden Bluetooth kalem bağlantıları için standart bir veri biçimi desteklenir. Platform, dokunma girişi ile kalem verileri arasındaki zamanlamayı ilişkilendirir ve ardından etkin uygulamada MotionEvent'leri oluşturmak için kalem verilerini sağlar. Aşağıdaki bölümlerde OEM cihaz uygulayıcıları, kalem aksesuarı üreticileri ve kalem uygulaması geliştiricileri için yönergeler verilmektedir.
OEM cihaz uygulayıcıları için yönergeler
Bluetooth kalem desteğini etkinleştirmek için OEM cihaz uygulayıcılarının Bluetooth'u desteklemesi gerekir (daha geniş uyumluluk için BTLE'yi de desteklemeleri önerilir). Platform, desteklenen kalem etkinlikleri için veri toplama, zamanlama korelasyonu ve uygulamaya oluşturma işlemlerini gerçekleştirir.
14 ve sonraki sürümlerde,
StylusButtonInputEventTest bağlı bir kalem davranışını taklit eder ve düğme etkinliklerinin doğru şekilde bildirildiğini test eder. Daha düşük sürümlerde geçici çözüm olarak, kalem etkinliklerini simüle edebilen bir kalem aksesuarı veya emülatör oluşturmanızı öneririz.
Stylus aksesuarı üreticileri için yönergeler
Cihaz uygulayıcılar, bir kalem cihazda desteği uygulamak için kalem verilerinin (basınca duyarlılık, silgi, düğmeler, cihaz kimliği, pil seviyesi, şarj durumu vb.) nasıl temsil edildiğini açıklamak üzere aşağıda gösterilen Stylus Human Interface Device (HID) tanımlayıcısını kullanmalıdır. Kalem cihazı, HID bilgilerini Android mobil cihaza gönderir. Bu sayede platform, MotionEvent sınıfını kullanarak kalem etkinlikleri oluşturmak için HID verilerini dokunmatik ekrandaki dokunma verileriyle ilişkilendirebilir. Android 14 ve sonraki sürümlerde, ekran kalemindeki düğmelere basıldığında KeyEvent sınıfı kullanılarak dahili etkinlikler de oluşturulur.
Veriler Bluetooth (BT), Bluetooth Düşük Enerji (BTLE) veya USB üzerinden gönderilebilir.
Örnek HID tanımlayıcısı
Aşağıdaki örnek HID tanımlayıcı raporları, uç teması, basınç, birincil ve ikincil düğmeler, silgi ve seri numarası hakkında bilgi verir. Eklediğiniz HID tanımlayıcısı, Bluetooth üzerinden kalem tarafından bildirilenleri doğru şekilde yansıtmalıdır. Bu, mevcut özelliklerin herhangi bir alt kümesi olabilir.
UsagePage(Digitizer)
Usage(Pen)
Collection(Application)
Usage(Stylus)
Collection(Logical)
Usage(Tip Pressure)
Logical Minimum(0)
Logical Maximum(1023)
Report Count(1)
Report Size(10)
Input(Data, Variable, Absolute, No Null)
Usage(Barrel Switch)
Usage(Secondary Barrel Switch)
Usage(Tip Switch)
Usage(Invert)
Logical Maximum(1)
Report Count(4)
Report Size(1)
Input(Data, Variable, Absolute, No Null)
Usage(Transducer Serial Number)
Report Count(1)
Report Size(128)
Feature(Constant, Variable)
EndCollection
EndCollection
unsigned char HID_DESC[] = {
0x05, 0x0D, // UsagePage(Digitizer)
0x09, 0x02, // Usage(Pen)
0xA1, 0x01, // Collection(Application)
0x09, 0x20, // Usage(Stylus)
0xA1, 0x02, // Collection(Logical)
0x09, 0x30, // Usage(Tip Pressure)
0x15, 0x00, // Logical Minimum(0)
0x26, 0xFF, 0x03, // Logical Maximum(1023)
0x95, 0x01, // Report Count(1)
0x75, 0x0A, // Report Size(10)
0x81, 0x02, // Input(Data, Variable, Absolute, No Null)
0x09, 0x44, // Usage(Barrel Switch)
0x09, 0x5A, // Usage(Secondary Barrel Switch)
0x09, 0x42, // Usage(Tip Switch)
0x09, 0x3C, // Usage(Invert)
0x25, 0x01, // Logical Maximum(1)
0x95, 0x04, // Report Count(4)
0x75, 0x01, // Report Size(1)
0x81, 0x02, // Input(Data, Variable, Absolute, No Null)
0x09, 0x5B, // Usage(Transducer Serial Number)
0x95, 0x01, // Report Count(1)
0x75, 0x80, // Report Size(128)
0xB1, 0x03, // Feature(Constant, Variable)
0xC0, // End Collection
0xC0, // End Collection
}
Stylus uygulama geliştiricileri için yönergeler
Android platformu eşleme ve etkinlik korelasyonunu otomatik olarak işlediğinden hem mevcut hem de yeni uygulamalar varsayılan olarak Bluetooth kalemi destekler. Android uygulamalarında kalemleri destekleme hakkında daha fazla bilgi edinmek için Android geliştirici belgelerine bakın.