构建前必须单独下载 OpenCV Android SDK 并配置 opencv sdk 路径,否则无法编译;目前仅 arm64-v8a 被官方支持;接收端需另配发送端(cimbar.org 或 cimbar_send)生成动画码。
cfc
sz3MIT活跃维护用手机摄像头扫描彩色条码来传输文件的 Android 演示应用,基于 libcimbar 实现,适合验证无网络环境下的近场文件传输。
Demo/test android app for libcimbar. Copy files over the cell phone camera!
1. 安装 Android Studio 与 Android NDK
2. 下载 OpenCV for android 4.5.0 SDK,并在 gradle.properties 中把 opencv sdk 指向解压目录README 未说明具体硬件要求;仅官方支持 arm64-v8a 架构的安卓设备,需要摄像头。
安卓应用,用摄像头单向接收 cimbar 动画码传输文件,不用 WiFi 蓝牙也能收
用手机摄像头扫描彩色条码来传输文件的 Android 演示应用,基于 libcimbar 实现,适合验证无网络环境下的近场文件传输。
核心能力
- 读取 libcimbar 生成的动画 cimbar 码还原文件
- 纯摄像头单向数据通道,飞行模式下同样可用
- 核心逻辑来自 libcimbar,以 git subtree 方式引入
- 发送端可用 cimbar.org 网页或 libcimbar 的 cimbar_send
容易踩的坑
- v0.6.8最新正式版2026-08-26 · 2026-08-26 23:24 UTC
boring maintenance release!
Notes:
- the play store made us do a release to bump the targetsdk version!
- thanks google!
- anyway, the apk is now 500kb smaller. So that's nice
- misc small bugfixes, including security/hardening upgrades for decoder
- the shader used for the encoder view now targets an older GLSL standard, which might allow it to work on (certain) older devices
- the encoder view now uses reproducible build bits. If you don't know what this is, don't worry about it. :)
- fdroid build still broken, hoping this helps a bit... may have to fix it myself...
See also: https://github.com/sz3/libcimbar/releases/tag/v0.6.8 https://github.com/sz3/cfc/pull/72
- the play store made us do a release to bump the targetsdk version!
- v0.6.72026-07-15 · 2026-07-15 03:58 UTC
查看更新说明
encoder view speedup!
Notes:
- the encoder webview now runs better/faster/more efficiently!
- draws to screen on background thread. This is most visible as a more stable framerate on older devices.
- file loading (at the start of encoding) should be much snappier
- the decoder now makes a best-effort attempt to set the mime type of a file at save time. Some android devices won't set the file type properly without this.
- misc other bugfixes and speedups
See also: https://github.com/sz3/libcimbar/releases/tag/v0.6.7c https://github.com/sz3/cfc/pull/70 https://github.com/sz3/cfc/pull/71 https://github.com/sz3/libcimbar/pull/168 https://github.com/sz3/libcimbar/pull/172 https://github.com/sz3/libcimbar/pull/175
- the encoder webview now runs better/faster/more efficiently!
- v0.6.62026-05-18 · 2026-05-18 23:11 UTC
查看更新说明
a maintenance release, sort of
Notes:
- partial app rewrite for opencv 4.12. Everything should look and act the same (the changes are as minimal as possible), but we basically swapped out the engine of the car.
- the release apk now uses a custom opencv build (.so) for size and speed reasons. (https://github.com/sz3/opencv-tinyso/releases/tag/v4.12)
- performance improvements: Code should run faster (cooler) than everything since the older opencv 4.4 builds. Hooray?
- newer NDK, newer gradle, misc other dependency upgrades. Blah blah blah
See also: #67 https://github.com/sz3/libcimbar/pull/162 https://github.com/sz3/libcimbar/pull/164 https://github.com/sz3/libcimbar/pull/161
Misc:
- we're going to give the arm32 build another try. Stay tuned!
Misc2:
- recompiled (incl. opencv 4.12) for 16kb page sizes (oops) as version
0.6.6g(internal version '25', since 24 already made it out), behavior and code will all be identical, but the play store is marginally happier about the app. If you can't decide which version to choose, I recommend a coin flip :slightly_smiling_face: .
- v0.6.42026-01-27 · 2026-01-27 02:49 UTC
查看更新说明
Mode Bu, and an in-app encoder!
-
introducing compatibility/reliability mode
Bu, a miniature (dare we say: micro) version of the modeBconfig.- as with mode
Bm, the motivation is a broader range of compatibility. Unlike modeBm,Buis not a compromise between speed and compatibility -- it's goal is provide a working configuration of "last resort". - This mode is slower under ideal conditions (~43% of mode B), but it should be more reliable on a broader range of devices.
- B > Bm > Bu in overall speed. (4C ~= B, if your screen colors are accurate)
- You'll want to use the fastest one that reliably works for your scenario...
- as with mode
-
also introducing a (beta) in-app encoder!
- thanks to @mrwm for putting the webview code together! (#57, #60)
- swipe vertically (up or down) to switch between the encoder and decoder view! This may make phone <-> phone transfers easier...
- the encoder will likely be slower than in-browser performance, but it should work in a pinch. ... hopefully... More improvements will hopefully make it in down the line. :slightly_smiling_face:
See also: https://github.com/sz3/libcimbar/releases/tag/v0.6.4 https://github.com/sz3/libcimbar/pull/155 https://github.com/sz3/cfc/pull/57 https://github.com/sz3/cfc/pull/60 https://github.com/sz3/cfc/pull/61 https://github.com/sz3/cfc/pull/62
build notes:
- this may be the last release using opencv4.8. We shall see.
screenshots:
-
- v0.6.3av0.6.32025-10-17 · 2025-10-17 05:09 UTC
查看更新说明
Mode Bm!
- introducing experimental mode
Bm, a more compact version of the modeBconfig.- This mode is slower under ideal conditions (~70% of mode B), but it should be more reliable on a broader range of devices.
- The new mode has been added to the auto-detect logic, so select it on the encoder side (ex: at https://cimbar.org, or via the latest libcimbar release ) and give it a try.
See also: https://github.com/sz3/libcimbar/releases/tag/v0.6.3 https://github.com/sz3/libcimbar/pull/143 https://github.com/sz3/libcimbar/pull/145 https://github.com/sz3/libcimbar/pull/146 https://github.com/sz3/cfc/pull/53
build notes:
- opencv4.8 is now the default opencv.
addendum:
- I tagged the wrong commit for this release initially. This is the right one :upside_down_face:
- introducing experimental mode
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
INTRODUCTION | ABOUT | CFC | LIBCIMBAR
CameraFileCopy
This is an android app for receiving data over the camera as a one-way data channel. It does not use any antennas (wifi, bluetooth, nfc, ...) or other tricks. Notably, this means it works just as well in airplane mode.
The app reads animated cimbar codes. Nearly all the interesting logic is from libcimbar -- included via a git subtree.
The sender component of cfc is a cimbar encoder -- such as https://cimbar.org. Navigate to that website (or use libcimbar's cimbar_send to generate barcodes natively), open a file to initialize the cimbar stream, and point the app+camera at the animated barcode.
Release apks
Release apks are also available here: https://github.com/sz3/cfc/releases/
Only arm64-v8a is officially supported at the moment, because that is all I can test for.
Building
- Install android studio
- Install the android ndk
- Download OpenCV for android
- Create a project with this repo at the root
- update
gradle.propertiessuch thatopencvsdkpoint to wherever you extracted the OpenCV Android SDK.
I found this project incredibly useful for getting started:
https://github.com/VlSomers/native-opencv-android-template
licensing, dependencies, etc
The code in cfc, such as it is, is MIT licensed. It is mostly a blend of various tutorial apps + wrapper code around libcimbar.
The libcimbar code is MPL 2.0. libcimbar's dependencies are a variety of MIT, BSD, zlib, boost, apache, ...