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 (ve daha geniş uyumluluk için BTLE'yi desteklemesi) gerekir. 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 kalemin davranışını taklit eder ve düğme etkinliklerinin doğru şekilde bildirildiğini test eder. Daha eski sürümlerde bu sorunu çözmek için 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 destek 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ğıdaki Kalem İnsan Arayüzü Cihazı (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, kalemin düğmesine 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ı raporu, 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.