Policy Privacy

 # Office Reader - All Document Reader & Viewer


## 📖 Giới thiệu

**Office Reader** là một ứng dụng Android đọc và quản lý tài liệu văn phòng toàn diện. Ứng dụng cung cấp các tính năng mạnh mẽ giúp người dùng dễ dàng xem, quản lý, xử lý đa dạng các định dạng tệp tin văn phòng (PDF, Word, Excel, PowerPoint, Text) ngay trên thiết bị di động.


Ngoài ra, ứng dụng còn được tích hợp các công cụ tiện ích cao cấp như quét/tạo mã QR, trích xuất văn bản từ hình ảnh (OCR), cùng hệ thống thanh toán Google Play Billing (IAP) với các gói Premium chuyên nghiệp.


---


## ✨ Tính năng nổi bật


### 1. Đọc & Quản lý Tài liệu

- **Hỗ trợ đa định dạng:** Xem nhanh các tệp tin `.pdf`, `.doc`, `.docx`, `.xls`, `.xlsx`, `.ppt`, `.pptx`, `.txt`.

- **Quản lý thông minh:** Tìm kiếm, sắp xếp (theo tên, ngày, kích thước), đổi tên, xóa, chia sẻ tài liệu.

- **Tối ưu trải nghiệm đọc:** Phóng to/thu nhỏ (Zoom), chế độ toàn màn hình, chuyển trang mượt mà.


### 2. Công cụ Hỗ trợ

- **OCR (Optical Character Recognition):** Trích xuất văn bản từ hình ảnh một cách nhanh chóng và chính xác.

- **QR Code Scanner & Generator:** Quét mã QR/Barcode và tự tạo mã QR tùy chỉnh.


### 3. Hệ thống Premium & Thanh Toán (Google Play Billing)

Ứng dụng được tích hợp sẵn **Google Play Billing Library**, hỗ trợ các hình thức:

- **Subscriptions (Gói đăng ký gia hạn tự động):** Tuần, 1 Tháng, 3 Tháng, 6 Tháng, 1 Năm, 2 Năm.

- **In-App Purchases (Mua đứt một lần):** Mua gói Premium trọn đời để loại bỏ quảng cáo vĩnh viễn.

- **Donation (Ủng hộ tác giả):** Tích hợp các gói mời cà phê (1, 3, 5 ly cafe) dành cho người dùng muốn ủng hộ nhà phát triển.


### 4. Hệ thống Quảng cáo (AdMob)

- Hỗ trợ các định dạng quảng cáo: Banner, Interstitial, Native, App Open Ad.

- Tự động ẩn toàn bộ quảng cáo đối với những người dùng đã nâng cấp lên Premium.


---


## 🛠 Nền tảng Công nghệ

- **Ngôn ngữ lập trình:** Java

- **Môi trường phát triển:** Android Studio

- **Target SDK:** Android 15 (API Level 35)

- **Kiến trúc:** Mô hình MVC/MVP cơ bản, thiết kế giao diện Material Design với BottomSheet, RecyclerView, ConstraintLayout.

- **Thư viện chính:**

  - `com.android.billingclient:billing` (Thanh toán Google Play)

  - `com.google.android.gms:play-services-ads` (Quảng cáo AdMob)

  - Thư viện đọc tài liệu (PDF, Office) & quét mã vạch (ZXing / ML Kit).


---


## 📁 Cấu trúc Dự án

```text

app/src/main/java/com/all/document/

├── adapter/         # Các Adapter cho RecyclerView (danh sách tệp tin, v.v.)

├── billing/         # Xử lý logic thanh toán Google Play (BillingManager)

├── helpers/         # Lớp tiện ích (Utils), quản lý file, xử lý chuỗi

├── model/           # Chứa các Object/Model dữ liệu (FileItem, Product...)

├── popup/           # Các cửa sổ Popup nhỏ trên giao diện

├── receiver/        # Broadcast receivers

├── screens/         # Chứa toàn bộ giao diện (UI) chia theo tính năng

│   ├── activities/  # Các màn hình chính (MainActivity, ViewerActivity...)

│   ├── dialogs/     # Chứa các Dialog (như PremiumBottomSheetDialog)

│   ├── fragments/   # Các tab thành phần (Tab PDF, Tab Word...)

│   └── ocr/         # Module tính năng nhận diện chữ qua ảnh

└── view/            # Chứa các view tùy chỉnh (Custom Views)

```


---


## 🔒 Quyền Truy Cập & Chính Sách Bảo Mật (Privacy Policy)


### 1. Privacy Policy

**Last updated:** May 14, 2026


Thank you for choosing to use Office Reader ("we", "us", "our"). We are committed to protecting your personal information and your right to privacy. If you have any questions or concerns about this privacy notice, or our practices with regards to your personal information, please contact us.


When you use our mobile application (the "App"), you trust us with your information. This Privacy Policy outlines what information we collect, how we use it, and what rights you have in relation to it.


#### 1.1 Information We Collect and Permissions Requested

To provide you with the core functionalities of the Office Reader app, we request the following permissions on your device. We do not collect or store your personal documents on our servers. All document processing is done locally on your device unless explicitly stated otherwise (e.g., using third-party APIs for real-time translation).


- **Storage Permissions (Read, Write, Manage External Storage):** We require access to your device's storage to find, read, edit, and save office documents (PDF, Word, Excel, PowerPoint) and images. The "All Files Access" (Manage External Storage) permission is strictly used to allow the app to function as a comprehensive document manager across your device.

- **Camera Permission:** The app uses your camera strictly for the OCR (Optical Character Recognition) feature, allowing you to scan physical documents or QR codes. Images captured are processed to extract text and are not maliciously uploaded or shared.

- **Microphone Permission (Record Audio):** We use the microphone solely for the Voice-to-Text translation feature. The audio you record is temporarily processed to convert speech to text and is not stored or shared for any other purpose.

- **Internet and Network State:** Used to access online services such as the translation API, load advertisements, and process secure in-app purchases.

- **Foreground Service:** Used to keep the app running reliably in the background while processing heavy tasks (like scanning or converting large documents) without being unexpectedly terminated by the system.


#### 1.2 Third-Party Services

The App uses third-party services that may collect information used to identify you. Below are the links to the privacy policies of third-party service providers used by the App:

- Google Play Services

- AdMob (Google collects Advertising ID and related metrics to serve personalized or non-personalized ads)

- Google Play Billing (For processing Premium subscriptions and in-app purchases safely)


#### 1.3 Advertising and Analytics

We use Google AdMob to display advertisements to support our development. AdMob may use Advertising IDs (and related privacy-sandbox ADSERVICES metrics) from your device to serve personalized ads based on your interests. You can opt-out of personalized advertising in your Android device settings (Settings > Google > Ads > Opt out of Ads Personalization).


#### 1.4 Data Security

We value your trust in providing us your information. We strive to use commercially acceptable means of protecting it. However, remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.


#### 1.5 Children's Privacy

These Services do not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13. In the case we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers.


#### 1.6 Changes to This Privacy Policy

We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page.


#### 1.7 Contact Us

If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us at [Điền Email Hỗ Trợ Của Bạn Vào Đây].


---


### 2. Chi tiết Quyền Truy Cập (Permissions)


#### 📁 Nhóm quyền Quản lý Tệp tin & Lưu trữ (Storage)

Đây là nhóm quyền quan trọng nhất sống còn đối với một ứng dụng đọc tài liệu, giúp ứng dụng tìm và mở được file của người dùng.

- `READ_EXTERNAL_STORAGE`: Cho phép ứng dụng đọc thẻ nhớ/bộ nhớ trong để tìm, liệt kê và mở các tệp tài liệu (PDF, Word, Excel, PowerPoint...) đang có trên máy.

- `WRITE_EXTERNAL_STORAGE`: Cho phép ứng dụng lưu tệp mới. Ví dụ: khi bạn tạo mới một tệp (CreateFileActivity), hoặc lưu kết quả sau khi quét ảnh thành PDF, ứng dụng cần quyền này để ghi tệp vào bộ nhớ.

- `MANAGE_EXTERNAL_STORAGE`: (Từ Android 11 trở lên) Quyền truy cập tất cả các tệp. Do chính sách bảo mật mới, các ứng dụng quản lý file/đọc tài liệu bắt buộc phải xin quyền này mới có thể quét toàn bộ bộ nhớ thiết bị để gom tất cả tài liệu hiển thị cho người dùng, thay vì chỉ được xem các tệp trong thư mục riêng của app.


#### 🌐 Nhóm quyền Kết nối Mạng & Internet

Dùng để tải dữ liệu, hiển thị quảng cáo và phục vụ các tính năng trực tuyến.

- `INTERNET`: Quyền cơ bản để ứng dụng có thể kết nối mạng. Được dùng để: gọi API Dịch văn bản (TranslateActivity), tải quảng cáo Google AdMob, gửi báo cáo lỗi sự cố, hoặc xác minh mua hàng Premium.

- `ACCESS_NETWORK_STATE`: Kiểm tra xem máy có đang kết nối mạng hay không (báo lỗi "Không có mạng" nếu người dùng bấm Dịch hoặc tải tệp mà mất mạng).

- `ACCESS_WIFI_STATE` & `CHANGE_WIFI_STATE`: Kiểm tra và tối ưu hóa khi người dùng đang dùng Wi-Fi (ví dụ: chỉ tự động tải xuống dữ liệu nặng/quảng cáo video khi có Wi-Fi để tiết kiệm 4G).

- `CHANGE_NETWORK_STATE`: Cho phép ứng dụng phản hồi lại khi trạng thái mạng thay đổi (được dùng bởi các module theo dõi mạng hoặc quảng cáo).


#### 📸 Nhóm quyền Phần cứng (Máy ảnh & Micro)

Phục vụ cho các tính năng tiện ích mở rộng của app.

- `CAMERA`: Cho phép mở máy ảnh. Dự án của bạn có các tính năng quét ảnh chuyển thành văn bản OCR (CameraActivity, ListOCRActivity) và Quét mã QR (QRScanActivity).

- `RECORD_AUDIO`: Cho phép sử dụng Micro. Quyền này phục vụ cho tính năng Dịch bằng giọng nói (Speech-to-Text) mà bạn vừa triển khai, giúp người dùng nói vào micro thay vì gõ phím.


#### 💰 Nhóm quyền Kiếm tiền & Quảng cáo (Monetization)

Nhóm này do thư viện Google AdMob tự động gộp vào để phục vụ hiển thị quảng cáo kiếm doanh thu.

- `com.android.vending.BILLING`: Cho phép ứng dụng hiển thị màn hình thanh toán của Google Play (In-App Purchases). Dùng khi người dùng muốn mua các gói VIP/Premium (như xóa quảng cáo, dịch không giới hạn).

- `com.google.android.gms.permission.AD_ID`: Lấy ID Quảng cáo của thiết bị để hiển thị quảng cáo phù hợp với sở thích của người dùng.

- `ACCESS_ADSERVICES_AD_ID`, `ACCESS_ADSERVICES_ATTRIBUTION`, `ACCESS_ADSERVICES_TOPICS`: Các quyền thuộc hệ thống Privacy Sandbox mới của Android 13+. Chúng cho phép AdMob theo dõi hiệu suất quảng cáo và phân phối quảng cáo dựa trên chủ đề người dùng quan tâm mà không vi phạm quyền riêng tư nghiêm ngặt.


#### ⚙️ Nhóm quyền Hệ thống & Tiện ích trải nghiệm

- `WAKE_LOCK`: Giữ màn hình luôn sáng. Rất cần thiết trong ứng dụng đọc tài liệu (người dùng đọc một trang PDF dài mà không chạm vào màn hình sẽ không bị tối/tắt màn hình) hoặc khi trình chiếu Slide (SlideShowActivity).

- `INSTALL_SHORTCUT`: Cho phép ứng dụng tạo một lối tắt (icon nhỏ) ra ngoài màn hình chính của điện thoại. Ví dụ: người dùng có thể tạo lối tắt cho một tài liệu PDF quan trọng để mở nhanh.

- `FOREGROUND_SERVICE`: Cho phép ứng dụng chạy một tiến trình ngầm có hiển thị thông báo. Thường dùng khi ứng dụng đang xử lý một tác vụ tốn thời gian (như chuyển đổi một file ảnh lớn sang PDF) để Android không tự động "giết" ứng dụng giữa chừng vì tưởng nó bị treo.

- `DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION`: Quyền bảo mật nội bộ do Android tự sinh ra để bảo vệ ứng dụng, ngăn chặn các app độc hại khác gửi tín hiệu giả mạo vào các bộ thu phát tín hiệu (receiver) nội bộ của app bạn.


---


## 🚀 Hướng dẫn Cài đặt & Chạy ứng dụng


### 1. Yêu cầu hệ thống

- Tải và cài đặt **Android Studio** bản mới nhất (Ladybug hoặc mới hơn).

- Cài đặt máy ảo hoặc kết nối thiết bị thật chạy **Android 7.0 (API 24)** trở lên.


### 2. Cấu hình dự án

- Clone hoặc giải nén mã nguồn dự án.

- Mở Android Studio -> Chọn **File > Open** -> Chọn thư mục chứa file `build.gradle` gốc.

- Đợi Gradle tự động đồng bộ (Sync) các thư viện.


### 3. Cấu hình AdMob

Mở file `AndroidManifest.xml` hoặc cấu hình chuỗi, tìm thẻ `<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" />` và thay thế giá trị bằng **App ID** trên tài khoản AdMob của bạn.


### 4. Cấu hình In-App Purchase (IAP)

1. Bạn cần một tài khoản Google Play Developer.

2. Tải bản build `.aab` đầu tiên lên nhánh thử nghiệm (Internal Testing).

3. Truy cập mục **Kiếm tiền (Monetization)** > **Sản phẩm (Products)**.

4. Tạo các sản phẩm với ID tương ứng được liệt kê trong `BillingManager.java`:

   - *Gói đăng ký (Subscriptions):* `remove_ads_sub`, `sub_7_days`, `sub_14_days`, `sub_1_month`, `sub_3_months`, `sub_6_months`, `sub_1_year`, `sub_2_years`.

   - *Mua 1 lần (In-App Purchases):* `bonus_iap`, `inapp_1_month`, `inapp_3_months`, `inapp_6_months`, `inapp_1_year`, `inapp_lifetime`.

   - *Donate (In-App Purchases):* `donate_1_coffee`, `donate_3_coffees`, `donate_5_coffees`.

5. Khi người dùng thực hiện mua sắm, trạng thái `Premium` sẽ tự động được lưu và tắt quảng cáo ngay lập tức.


---


## 📝 Lưu ý Phát triển

- Khi muốn tùy chỉnh giá tiền hoặc thay đổi ID sản phẩm, bạn phải sửa đổi trực tiếp mảng hằng số bên trong file `BillingManager.java` và tạo ID tương tự trên Google Play Console.

- Nếu ứng dụng báo lỗi khi test Billing, hãy chắc chắn rằng bạn đang test trên **thiết bị thật** và tài khoản Google Play đang dùng đã được thêm vào danh sách **Tester** trong Play Console.


---

*Dự án được bảo trì và phát triển để đem lại sự thuận tiện tốt nhất trong việc xử lý văn phòng trên thiết bị di động.*


Nhận xét