Mô phỏng tính năng Privacy Display trên Galaxy S26 Ultra — tự động che mờ nội dung nhạy cảm khi người khác nhìn vào màn hình của bạn.
- Hiệu chỉnh góc nghiêng — Giữ nút 3 giây để lưu tư thế cầm điện thoại bình thường của bạn
- Tự động che mờ — Khi điện thoại bị nghiêng ra ngoài vùng an toàn, màn hình tối dần hoặc mờ nhòe
- Vùng che linh hoạt — Chọn hình chữ nhật, hình vuông hoặc hình tròn; kéo thả tự do trong màn hình
- Toàn màn hình — Tùy chọn che mờ toàn bộ thay vì chỉ một vùng
- 2 hiệu ứng — Tối dần (Dim) hoặc mờ nhòe (Blur), chỉnh trong Settings
- Dark / Light Mode — Chuyển đổi giao diện theo sở thích
- Lưu cài đặt — Toàn bộ cấu hình được lưu lại, không cần setup lại mỗi lần mở
- Hỗ trợ Web & Native — Chạy trên trình duyệt (PWA) và app Capacitor (Android/iOS)
| Setup | Home | Settings |
|---|---|---|
| Hiệu chỉnh góc nghiêng | Kéo thả vùng che | Tuỳ chỉnh hiệu ứng |
Mở bằng Chrome trên Android hoặc Safari trên iOS để trải nghiệm đầy đủ tính năng cảm biến.
| Công nghệ | Mục đích |
|---|---|
| Ionic 7 | UI framework, components |
| Angular 17 | Frontend framework |
| Capacitor 6 | Native bridge (iOS/Android) |
| @capacitor/motion | Đọc cảm biến con quay hồi chuyển |
| @capacitor/preferences | Lưu cài đặt persistent |
| Vercel | Deploy web/PWA |
- Node.js >= 18
- npm >= 9
- Ionic CLI:
npm install -g @ionic/cli
git clone https://github.com/ten-ban/privacy-display.git
cd privacy-display
npm installionic serveTrên desktop browser sẽ không có cảm biến. Dùng Chrome DevTools → Sensors để giả lập
deviceorientation.
ionic build --prodnpx cap add android
npx cap sync
npx cap run androidnpx cap add ios
npx cap sync
npx cap run iossrc/
├── app/
│ ├── services/
│ │ ├── motion.service.ts # Cảm biến (Capacitor + Web fallback)
│ │ └── settings.service.ts # Quản lý & lưu cài đặt
│ ├── setup/ # Màn hình hiệu chỉnh góc nghiêng
│ ├── tabs/ # Tab navigation
│ ├── home/ # Màn hình chính + điều khiển vùng che
│ └── settings/ # Cài đặt hiệu ứng, theme, re-calibrate
├── theme/
│ └── variables.scss # CSS variables cho Dark/Light mode
└── assets/
| Nền tảng | Hỗ trợ | Ghi chú |
|---|---|---|
| Chrome Android | ✅ Đầy đủ | Không cần xin permission |
| Samsung Internet | ✅ Đầy đủ | |
| Safari iOS | ✅ Đầy đủ | Cần cho phép truy cập Motion khi được hỏi |
| Chrome iOS | ✅ Đầy đủ | Dùng engine Safari bên dưới |
| Desktop Chrome | Không có sensor vật lý, dùng DevTools Sensors để test | |
| Android App (Capacitor) | ✅ Native | Dùng @capacitor/motion trực tiếp |
| iOS App (Capacitor) | ✅ Native | Dùng @capacitor/motion trực tiếp |
Sensor đọc beta (trước/sau) & gamma (trái/phải)
│
▼
deviation = √( (β - β₀)² + (γ - γ₀)² )
│
┌─────────┴──────────┐
│ │
deviation ≤ tolerance deviation > tolerance
│ │
Hiển thị bình opacity tăng dần
thường ✅ từ 0 → 0.92
blur tăng từ 0 → 22px
β₀, γ₀ là góc nghiêng chuẩn bạn đã lưu trong bước Setup. tolerance là vùng chấp nhận lệch (mặc định ±10°, chỉnh được trong Settings).
npm install -g vercel
ionic build --prod
vercel login
vercel --prodHoặc kết nối GitHub repo → Vercel tự động deploy mỗi lần git push.
Chi tiết xem tại vercel.json.
Mọi ý kiến đóng góp đều được hoan nghênh!
- Fork repo
- Tạo branch:
git checkout -b feature/ten-tinh-nang - Commit:
git commit -m 'Add: mô tả tính năng' - Push:
git push origin feature/ten-tinh-nang - Tạo Pull Request
Dự án này sử dụng giấy phép MIT.
Made with ❤️ using Ionic + Angular + Capacitor