Back in the day when I worked on device drivers for barcode scanners most of the heavy lifting was done in the scanner itself. That’s where the aperture controlled the amount of reflected media the receiver measured. Depending on how fast the aperture controller system was there was still potential for first bar blooming. This was the timeout applied to the aperture when it was completely closed in response to a very high media value such that the controller assumed that the reader was passing through the margin of the barcode and just about to enter into the actual barcode.
So what happens when the accelerometer in your favorite device detects everything from small fan vibrations to massive earthquakes to super vibrations?