Option a) vous compilez uniquement les modules du noyau et utilisez les nœuds de périphérique spécifiques. Cela nécessiterait de rooter votre appareil et de compiler des modules de noyau spécifiques pour des noyaux spécifiques pour des appareils spécifiques (moche!)
Option b) vous écrivez une enveloppe autour des pilotes Linux en utilisant NDK et laissez l'enveloppe être l'intermédiaire entre l'interface hôte USB Android (Java) et les pilotes Linux (C) coordonnant tous les événements et distribuant les données.
J'ai commencé à travailler sur l'option b) pour les pilotes de périphériques usb-dvb, et c'est une quantité incroyable de travail à faire. J'espère que votre pilote n'est pas aussi compliqué.
Si votre pilote est très facile (seulement quelques fichiers et pas 10k+ lignes de code de bas niveau ou même d'assembleur) à traduire en Java, allez-y et utilisez Option c) réécrivez le code C en Java. Ainsi, vous n'avez pas besoin d'une enveloppe en C et vous pouvez éviter la partie NDK qui vous évite beaucoup de problèmes et de cauchemars.