2.7 KiB
Vendor compatibility notes
Scope
uNote is a vendor-independent core. It does not include, load, or compile against Xiaomi, MobiScribe, eNote, Onyx, or Boox libraries or native code. It models independently observed capabilities only, pixel submission, bounded refresh, and pressure-aware pen streams. BooxRenderer conditionally probes documented-by-observation framework extensions already present on a BOOX system image. It has no dependency on the Onyx AAR.
Vendor-specific application adapters can live outside uNote. The existing Krita Xiaomi adapter is one such adapter and remains separate from this library.
Provider selection is capability based. It does not use an Android device fingerprint, bundle an OEM AAR, or claim support merely because a manufacturer string matches.
eNote
The pinned eNote javalib.jar exposes public methods for framebuffer initialization, waveform selection, draw regions, pen switching, and teardown. Those observations map to uNote's Renderer, DamageTracker, and StrokeSink contracts. No eNote class name, Java bytecode, or native implementation is used at runtime.
The sample computes waveform values from non-standard android.view.View.EINK_* constants. uNote does not copy those platform constants or guess numeric values. An integrator must calibrate mode values for its device.
Onyx and Boox
The supplied device AAR exposes a device-selected Java backend with full and region refresh, waveform modes, bounded handwriting regions, direct bitmap handwriting, and start, move, and finish stroke calls. The supplied pen AAR exposes a raw Android input stream. These public capabilities map to the same clean uNote contracts. Neither AAR is bundled, loaded, or named by uNote.
The public Onyx demo confirms that a normal drawing target can be a SurfaceView or another Android view. The supplied device AAR shows that it calls system-image View extensions named refreshScreen(int) and refreshScreen(int, int, int, int, int), using constants from the framework helper class android.onyx.ViewUpdateHelper. BooxRenderer probes exactly those extensions at runtime and falls back to public invalidation. It does not load or package an Onyx SDK. Raw-scribble remains unavailable because its input service contract has not been independently verified.
MobiScribe
The supplied nNote APK exposes ntx.eink_control.QUICK_REFRESH and ntx.eink_control.GLOBAL_REFRESH broadcasts, plus a privileged E Ink Binder service. MobiScribeRenderer uses the two observable broadcast actions only and does not bundle the APK, its Binder stubs, or any native code. Its renderer reports no region or pixel capability because the observed broadcasts have no verified public rectangle contract.