
Android용 드론 HASAKEE FPV 비디오 앱

HASAKEE FPV 드론의 라이브 비디오 스트림을 시청하기 위한 Android 앱입니다. 드론의 WiFi 카메라에서 사용하는 독점 UDP 프로토콜을 리버스 엔지니어링하여 제작되었습니다.
HASAKEE-WiFi-XXXXX)192.168.0.1, 비디오 포트: 40000동일한 프로토콜을 사용하는 다른 HASAKEE/Lewei 기반 드론도 작동할 수 있습니다.
WifiNetworkSpecifier 사용, API 26-28은 기존 연결 확인)| 스트리밍 | WiFi 자동 연결 |
|---|---|
![]() | ![]() |
앱 아이콘:
드론 아이콘은 Flaticon에서 제공 — 출처 표시 시 개인 및 상업용 무료 사용 가능.
앱이 UDP를 통해 드론과 통신합니다:
HASAKEE-WiFi-XXXXX)에 연결63 63 01 00 00 00 00)을 192.168.0.1:40000으로 전송드론은 HASAKEE FPV Android 앱의 네이티브 라이브러리(liblewei-2.3.so, liblewei63.so)에서 리버스 엔지니어링된 독점 패킷 형식을 사용합니다:
오프셋 0x00-0x01: 0x6363 (매직 헤더)
오프셋 0x02: 명령 유형 (0x01=하트비트, 0x03=비디오)
오프셋 0x03-0x04: 시퀀스 ID
오프셋 0x05-0x06: 패킷 길이
오프셋 0x07: 프레임 유형
오프셋 0x08-0x0B: 프레임 ID
오프셋 0x36 (54): JPEG 데이터 시작
이 앱은 HASAKEE FPV Android 앱(버전 1.0.4)의 네이티브 라이브러리를 Ghidra 및 Wireshark 패킷 분석을 통해 리버스 엔지니어링하여 얻은 프로토콜 지식을 기반으로 제작되었습니다.
전체 리버스 엔지니어링 작업(디컴파일된 프로토콜 문서, Python 개념 증명 스트리밍 코드, 상세 프로토콜 노트 포함)은 다음에서 확인할 수 있습니다:
git clone https://github.com/mretallack/DroneCamera.git
cd DroneCamera
./gradlew assembleDebug
APK는 app/build/outputs/apk/debug/app-debug.apk에 생성됩니다.
릴리스 빌드에는 서명 키스토어가 필요합니다:
export KEYSTORE_PATH=release.keystore
export KEYSTORE_PASSWORD=<your-password>
export KEY_ALIAS=release
export KEY_PASSWORD=<your-password>
./gradlew assembleRelease
서명된 APK는 app/build/outputs/apk/release/app-release.apk에 생성됩니다.
./gradlew installDebug
./gradlew test
./gradlew lintDebug
app/src/main/java/uk/org/retallack/dronecamera/
├── FrameAssembler.kt # 0x6363 패킷 파서, 프레임 조립, 난독화 해제
├── DroneConnection.kt # UDP 하트비트 송신기 및 패킷 수신기
├── WifiConnector.kt # HASAKEE 드론 WiFi 자동 연결
├── DroneStreamViewModel.kt # 상태 관리 (IDLE/CONNECTING/STREAMING/ERROR)
└── MainActivity.kt # SurfaceView 비디오 표시 및 UI
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 — 자세한 내용은 LICENSE를 참조하세요.
드론 아이콘은 Flaticon에서 제공.