Bzgl. "Blockierungsfrei lesen selbst programmieren" - das habe ich schon versucht. Allerdings ging das (wie in StackOverflow beschrieben) nur mit der JInputStream.available() Funktion, die laut Javadokumentation nicht für diesen Zweck verwendet werden soll, da der Wert nur eine grobe Schätzung ist - in der Tat haben manche Geräte wegen der schlechten Schätzung dauerhaft blockiert oder nie gelesen, da available() bei manchen Geräten immer 0 oder immer >0 war.
OK, mach was Du willst.. aber lass doch einfach "JInputStream.available()" mist weg... Bau dir nen netten Thread mit einen Buffer und lies über davon Blockungsfrei ein. Fertig in 10 min.
Ich habe fertig...