For our use case, we will be using the first option, since option three is not available at the moment.
After some digging, we discovered that there are multiple libraries that could help us implement this use case. However, we decided to post this question to know if someone has already implemented something similar, or at least tried to. So, we can share the know-how behind it.
I have integrated a barcode scanner with Creatio. We've used a simple bluetooth barcode scanner connected to the device (in our case it was a tablet with full Creatio open in the browser). Most barcode scanners work just like a connected keyboard. When a barcode is scanned it sends the "text" value of the barcode to as input, just as if it were typed in. In my solution, we had a page that opened and we set focus to a text/input field on the page and dislayed some message about "waiting for barcode" for the user. Then, once scanned, the text value of the barcode scanned triggered a change event for the text/input field and we then did the action needed for the barcode (which in our case the barcode was a vehicle VIN, so we then used an API to get the vehicle details for the scanned VIN). All really simple to be honest. Using this approach, thinking of the barcode scanner as text entered by an input device, just like a keyboard, it all turned out to be really easy to work with. Hope this helps.
Unfortunately it is not possible to use QR code scanner in the mobile application. Apart from that we do not have any examples of such implementation. We will register this idea for our R&D team for implementation in future application releases.
Unfortunately, at the moment we still don't have the option to use QR code scanner in the mobile application. However, we already have this idea registered for more detailed consideration and implementation in future releases of the application.