One screen plays a stream of QR codes; the other device watches it through its camera and rebuilds the files. Nothing travels over a network. Any frames will do — missed codes don't need to come round again.
or drop files here. Compressed before sending; up to a few MB is practical.
The receiver needs any — blocks' worth of codes, in any order. Codes it misses don't have to come round again — every new code after the first pass fills whatever gap the receiver has.
Scan this with the receiving phone's camera app to open this page there, already on Receive.
Waiting to start.
These need no permission. Record a video of the sending screen with the ordinary camera app — a few seconds longer than the sender's ideal time — and bring it here.