Privacy Policy
Magnifier & Flashlight
Magnifier & Flashlight for Android — package com.nexperlabmedia.magnifier
Effective date: 2026-09-11 · Last updated: 2026-09-15
At a glance
This app magnifies whatever the camera is pointed at and can switch on the flashlight. It has no account, no login and no developer-operated server. The camera image is shown on screen and analysed in memory; it is not recorded and it is not uploaded anywhere. Google AdMob (advertising) and Google Play Billing (the ad-free purchase) are the only third parties involved. Version 1.1.0 adds two things to that: it can recognise the text in a frozen frame with Google ML Kit on your device, and it can read that text out loud through the text-to-speech engine installed on your phone — an engine that, on many devices, is a separate third-party app. No image and no recognised text is uploaded to the developer or to Google.
| Data sent to the developer | None. The developer operates no server for this app. |
|---|---|
| Account or sign-in | None. |
| Local data | Your preferences (default zoom, colour filter, keep-screen-on, haptics, the onboarding flag, the ad-free state) and the reading list: the text recognised from frames you chose to save, plus the read-aloud speaking rate and text size |
| Photos / camera frames | Nothing is stored automatically while you magnify. Freezing writes one still frame to the app’s private cache so it can be recognised. When you tap save, a single snapshot is written to your device gallery. When you save a reading, that frame is kept as a PNG in the app’s private storage until you delete the entry. |
| Recognition and speech | Text recognition (Google ML Kit) runs on the device; no image and no text leaves it. Reading aloud passes the recognised text to the device’s text-to-speech engine, which may be a third-party app with its own privacy policy. |
| Third parties | Google AdMob (banner and interstitial ads) and Google Play Billing (the ad-free purchase). No analytics SDK and no crash-reporting SDK. |
| Permissions declared | CAMERA, AD_ID, BILLING, INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_* |
1. What the app stores on your device
Using shared_preferences in the app's private storage, the app keeps only settings: the default zoom level, the selected colour filter, whether the screen is kept awake, haptic feedback, whether onboarding was completed, and the ad-free purchase and consent state. There is no log, no history and no user content database. None of this is transmitted to the developer.
Version 1.1.0 adds a reading list and two read-aloud preferences. The speaking rate (read_rate) and the on-screen text size (read_text_scale) are ordinary preferences. When you save a reading, the recognised text is stored under the readings key and the frozen frame itself is written as a PNG file into a readings folder inside the app’s private documents directory. The list holds at most 50 entries; when it overflows, the oldest entry and its image file are deleted together. The most recent reading is additionally kept on its own (last_reading, text only) so the home screen can read it again. All of it is app-private storage on this phone: other apps cannot read it, and none of it is transmitted to the developer.
2. Camera and photos
The camera preview is rendered live and, for the freeze and filter features, held in memory only. Nothing is written to disk while you are magnifying. If you tap the save button, that single frame is written as a PNG to your device's gallery (through MediaStore, into an album named Magnifier), where it is yours to keep, move or delete like any other photo. If you tap share instead, the image is written to the app's temporary directory and handed to Android's share sheet, where you choose the destination app. The developer receives no copy in either case.
Freezing the picture is the one case where a frame reaches the disk on its own: the app takes a single still and writes it to its private cache directory, because on-device text recognition needs a file to read. It is not added to your gallery, it is not uploaded, and the system reclaims it when it clears the app cache. It only becomes durable if you save that reading, as described in section 1.
3. Text recognition and reading aloud
From a frozen frame the app can recognise the text in it and speak that text. The two halves behave differently, so they are described separately.
- Recognition runs on your device. Google ML Kit text recognition (Latin script) reads the frozen frame locally. Neither the frame nor the recognised text is uploaded — not to the developer, not to Google. The manifest asks Google Play services to fetch the recognition model at install time (
com.google.mlkit.vision.DEPENDENCIESwith the valueocr) so the first recognition does not have to wait for it; that is a model coming down to the phone and it carries nothing of yours upward. - Reading aloud is done by the speech engine installed on your device. Through
flutter_ttsthe app hands the recognised sentences to Android’s text-to-speech service, and the manifest declares a<queries>entry for android.intent.action.TTS_SERVICE so the app can see which engines exist on the phone at all. A text-to-speech engine is frequently a separate third-party app — one shipped by your device maker, or one you installed yourself — and some engines synthesise speech on their own servers rather than on the phone. What such an engine does with the text it is given is governed by that engine’s privacy policy, not by this one. You can see and change the active engine in Android Settings → Accessibility → Text-to-speech output. If you never use the read-aloud feature, no text is ever handed to an engine.
Recognition and speech start only when you ask for them, never in the background, and the developer receives nothing from either.
4. What the app does not collect
The app does not request or read your name, email address, phone number, contacts, messages, calendar, location, or any file outside the places described above. It has no account system, no sign-in and no cloud sync, and it contains no analytics SDK and no crash-reporting SDK. Apart from the requests the advertising and billing SDKs make, the app makes no network request of its own.
Three permissions are deliberately not requested. The camera library and the share library would otherwise merge them in, so the app's manifest strips them out with tools:node="remove": RECORD_AUDIO (the microphone — the camera runs with audio disabled), READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE (legacy shared-storage access). They do not appear in the installed package.
Version 1.1.0 added no permission. On-device recognition needs none, and speaking through the system engine needs only the <queries> declaration described above, which is package visibility rather than a permission. The permission list in the installed package is unchanged.
5. Advertising (Google AdMob) and consent
The app shows a banner ad and, occasionally after a completed action, a full-screen interstitial through the Google Mobile Ads SDK. To serve and measure those ads, Google may process your device's advertising ID (AD_ID), coarse device and network information, and ad interaction events. This happens inside Google's SDK; the developer does not see or store that data, and nothing you capture, scan or store in the app is given to it.
- Google's handling of that data: How Google uses information from sites or apps that use our services, and the Google Privacy Policy
- In the EEA, the UK and Switzerland the app shows a Google-certified consent message (Google User Messaging Platform, UMP) before personalised ads are used. You can reopen it later from Settings → Privacy settings and change your choice.
- You can reset or delete the advertising ID at any time in Android Settings → Privacy → Ads. Deleting it stops personalised advertising on the device.
6. Ad-free purchase
A one-time in-app purchase (magnifier_cam_premium) removes the ads. The purchase is processed entirely by Google Play Billing: the developer never receives your card number, billing address or any other payment detail, and sees only Play's aggregated sales reports. The app stores locally whether the purchase is active, so ads stop showing. Restoring the purchase on another device is handled by your Google Play account.
7. Permissions
The app declares android.permission.CAMERA (the camera), com.google.android.gms.permission.AD_ID and com.android.vending.BILLING itself. The rest are merged in automatically by the libraries it uses:
- INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_AD_ID / ATTRIBUTION / TOPICS — merged in by the Google Mobile Ads SDK, to fetch and measure ads
- com.android.vending.BILLING — the ad-free in-app purchase, handled by Google Play
- WAKE_LOCK — merged in by the keep-screen-on feature, so the screen does not dim while you are holding the phone over something
8. Sharing and export
Sharing goes through Android's share sheet: you pick the app that receives the image, and that app then handles it under its own privacy policy. Saving goes to your gallery. Neither route passes through any server of the developer.
9. Automatic backup
The manifest does not disable Android backup (allowBackup="true"). Under Android's default behavior, eligible local data may be copied to your own Google-account device backup. The developer cannot access or control that copy. What is actually backed up depends on your device, vendor and Android version.
10. How long data is kept, and how to delete it
Settings stay until you change them. Snapshots you saved live in your gallery and are deleted the way you delete any photo. Clearing the app's storage in Android settings, or uninstalling the app, removes all of the app's own data; photos already saved to the gallery are not removed by uninstalling, because they belong to you, not to the app.
Reading-list entries stay until you delete them; deleting an entry deletes the frame image stored with it, and the list drops its oldest entry once it passes 50. The frozen frame in the cache is transient and is reclaimed by the system when the app cache is cleared.
11. Children
The app is not directed to children and the developer does not knowingly collect personal information from children.
12. Changes to this policy
If the app's permissions, SDKs or data practices change, this page and its “last updated” date will be revised.
13. Contact
Questions about this policy:
- Company: Nexperlab Co., Ltd.
- Address: 2F, 21, Gangnam-daero 107-gil, Seocho-gu, Seoul, Republic of Korea
- Email:
nexperlabmedia@gmail.com
개인정보처리방침
Magnifier & Flashlight
Magnifier & Flashlight (Android) — 패키지 com.nexperlabmedia.magnifier
시행일: 2026-09-11 · 최종 수정일: 2026-09-15
한눈에 보기
이 앱은 카메라가 비추는 것을 확대해 보여주고 손전등을 켤 수 있다. 계정도, 로그인도, 개발자가 운영하는 서버도 없다. 카메라 영상은 화면에 표시되고 메모리에서만 처리된다 — 녹화하지 않고 어디로도 업로드하지 않는다. 관여하는 제3자는 Google AdMob(광고)와 Google Play 결제(광고 제거 구매)뿐이다. 1.1.0은 여기에 두 가지를 더한다. 화면을 고정한 장면 속 글자를 Google ML Kit으로 기기 안에서 인식하고, 그 글자를 기기에 설치된 음성 합성(TTS) 엔진으로 소리내어 읽어준다 — 이 엔진은 많은 기기에서 별도의 제3자 앱이다. 이미지도 인식된 글자도 개발자나 Google로 업로드되지 않는다.
| 개발자에게 전송되는 데이터 | 없음. 이 앱을 위한 개발자 서버가 없다. |
|---|---|
| 계정·로그인 | 없음. |
| 로컬 데이터 | 설정값(기본 배율, 색상 필터, 화면 켜둠, 햅틱, 온보딩 완료 표시, 광고 제거 상태)과 읽기 목록: 저장한 장면에서 인식된 텍스트, 그리고 읽어주기 속도·글자 크기 |
| 사진·카메라 영상 | 확대해 보는 동안 자동으로 저장되는 것은 없다. 화면을 고정하면 그 한 장면이 인식을 위해 앱 전용 캐시에 써진다. 저장을 누른 순간에만 스냅샷 한 장이 기기 갤러리에 기록된다. 읽기 목록에 저장하면 그 장면이 PNG로 앱 전용 저장소에 남아 항목을 지울 때까지 보관된다. |
| 인식과 음성 | 글자 인식(Google ML Kit)은 기기 안에서 돌아가며 이미지도 텍스트도 기기를 떠나지 않는다. 읽어주기는 인식된 텍스트를 기기의 TTS 엔진에 넘긴다 — 자체 방침을 가진 제3자 앱일 수 있다. |
| 제3자 | Google AdMob(배너·전면 광고)와 Google Play 결제(광고 제거 구매). 분석 SDK·크래시 리포팅 SDK는 없다. |
| 선언 권한 | CAMERA, AD_ID, BILLING, INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_* |
1. 앱이 기기에 저장하는 것
앱은 shared_preferences를 사용해 앱 전용 저장소에 설정만 보관한다: 기본 배율, 선택한 색상 필터, 화면 켜둠 여부, 햅틱, 온보딩 완료 여부, 광고 제거 구매·동의 상태. 기록도, 히스토리도, 사용자 콘텐츠 데이터베이스도 없다. 이 가운데 어느 것도 개발자에게 전송되지 않는다.
1.1.0은 여기에 읽기 목록과 읽어주기 설정 두 가지를 더한다. 읽어주기 속도(read_rate)와 화면 글자 크기(read_text_scale)는 여느 설정값과 같다. 읽은 것을 저장하면 인식된 텍스트는 readings 키에 들어가고, 고정했던 장면 자체는 앱 전용 문서 디렉터리 안 readings 폴더에 PNG 파일로 써진다. 목록은 최대 50건이며, 넘치면 가장 오래된 항목과 그 이미지 파일을 함께 지운다. 마지막으로 읽은 것은 홈 화면에서 다시 읽을 수 있도록 따로 한 건(last_reading, 텍스트만) 더 남는다. 모두 이 기기의 앱 전용 저장소에만 있어 다른 앱은 읽을 수 없고, 개발자에게 전송되지 않는다.
2. 카메라와 사진
카메라 미리보기는 실시간으로 그려지고, 화면 고정·필터 기능을 위해 메모리에만 잠시 담긴다. 확대해 보는 동안 디스크에 기록되는 것은 없다. 저장 버튼을 누르면 그 한 장면이 PNG로 기기 갤러리에 저장된다(MediaStore를 통해 Magnifier 앨범으로). 저장된 사진은 다른 사진과 똑같이 사용자가 보관·이동·삭제한다. 공유를 누르면 이미지가 앱 임시 디렉터리에 만들어져 Android 공유 시트로 넘어가고, 받을 앱은 사용자가 고른다. 어느 경우에도 개발자는 사본을 받지 않는다.
화면 고정은 프레임이 스스로 디스크에 닿는 유일한 경우다. 앱은 그 장면 한 장을 찍어 앱 전용 캐시 디렉터리에 써 둔다 — 기기 안에서 도는 글자 인식이 읽을 파일이 필요하기 때문이다. 갤러리에 들어가지 않고, 업로드되지 않으며, 시스템이 앱 캐시를 비울 때 회수된다. 1항에서 설명한 대로 그 읽기를 저장했을 때에만 오래 남는다.
3. 글자 인식과 읽어주기
고정한 장면에서 앱은 그 안의 글자를 인식하고 읽어줄 수 있다. 두 가지는 동작이 다르므로 나누어 적는다.
- 인식은 기기 안에서 돌아간다. Google ML Kit 텍스트 인식(라틴 문자)이 고정된 장면을 로컬에서 읽는다. 그 장면도, 인식된 텍스트도 업로드되지 않는다 — 개발자에게도 Google에게도. 매니페스트는 첫 인식이 기다리지 않도록 설치 시점에 인식 모델을 미리 받게 해 둔다(
com.google.mlkit.vision.DEPENDENCIES, 값ocr). 이는 모델이 기기로 내려오는 통신이며 사용자의 데이터가 올라가지는 않는다. - 읽어주기는 기기에 설치된 음성 엔진이 한다. 앱은
flutter_tts를 통해 인식된 문장을 Android의 TTS 서비스에 넘긴다. 어떤 엔진이 기기에 있는지 보기 위해 매니페스트에 android.intent.action.TTS_SERVICE에 대한<queries>항목을 선언해 둔다. 음성 엔진은 별도의 제3자 앱인 경우가 많고(제조사가 넣어둔 것일 수도, 사용자가 설치한 것일 수도 있다), 엔진에 따라서는 기기가 아니라 자사 서버에서 음성을 합성하기도 한다. 그 엔진이 넘겨받은 글자를 어떻게 다루는지는 이 방침이 아니라 그 엔진의 개인정보처리방침이 정한다. 현재 엔진은 Android 설정 → 접근성 → 텍스트 음성 변환 출력에서 확인하고 바꿀 수 있다. 읽어주기를 쓰지 않으면 어떤 글자도 엔진으로 넘어가지 않는다.
인식과 음성은 사용자가 시작할 때만 일어나고 백그라운드에서는 동작하지 않으며, 개발자는 어느 쪽에서도 아무것도 받지 않는다.
4. 앱이 수집하지 않는 것
앱은 이름, 이메일 주소, 전화번호, 연락처, 메시지, 캘린더, 위치, 위에서 설명한 곳 밖의 파일을 요구하거나 읽지 않는다. 계정 시스템도, 로그인도, 클라우드 동기화도 없고 분석 SDK·크래시 리포팅 SDK도 들어 있지 않다. 광고·결제 SDK가 하는 통신 외에 앱 자체의 네트워크 요청은 없다.
세 가지 권한은 의도적으로 요청하지 않는다. 카메라·공유 라이브러리가 그대로 두면 병합해 넣기 때문에, 앱 매니페스트에서 tools:node="remove"로 잘라낸다: RECORD_AUDIO(마이크 — 카메라는 오디오를 끈 채로 동작한다), READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE(구형 공용 저장소 접근). 설치되는 패키지에 이 권한들은 없다.
1.1.0에서 새로 추가된 권한은 없다. 기기 내 인식은 권한이 필요 없고, 시스템 엔진으로 읽어주는 데는 위에서 설명한 <queries> 선언만 있으면 된다 — 이는 권한이 아니라 패키지 가시성 선언이다. 설치되는 패키지의 권한 목록은 그대로다.
5. 광고 (Google AdMob)와 동의
앱은 Google Mobile Ads SDK를 통해 배너 광고를 표시하고, 작업을 마친 뒤 이따금 전면 광고를 띄운다. 광고를 게재하고 측정하기 위해 Google은 기기의 광고 ID(AD_ID), 대략적인 기기·네트워크 정보, 광고 상호작용 기록을 처리할 수 있다. 이는 Google의 SDK 안에서 일어나며 개발자는 그 데이터를 보거나 저장하지 않는다. 앱에서 찍거나 스캔하거나 저장한 내용은 광고 SDK에 전달되지 않는다.
- Google의 데이터 처리 안내: Google 서비스를 사용하는 사이트나 앱에서 수집한 정보를 Google이 사용하는 방법, Google 개인정보처리방침
- EEA·영국·스위스에서는 맞춤 광고 사용 전에 Google 인증 동의 메시지(Google User Messaging Platform, UMP)를 표시한다. 이후 설정 → 개인정보 설정에서 다시 열어 선택을 바꿀 수 있다.
- Android 설정 → 개인정보 보호 → 광고에서 광고 ID를 언제든 재설정하거나 삭제할 수 있다. 삭제하면 그 기기에서 맞춤 광고가 중단된다.
6. 광고 제거 구매
일회성 인앱 상품(magnifier_cam_premium)을 구매하면 광고가 사라진다. 결제는 전적으로 Google Play 결제가 처리한다. 개발자는 카드 번호·청구 주소 등 어떤 결제 정보도 받지 않으며 Play가 제공하는 집계 판매 보고서만 본다. 앱은 구매가 활성 상태인지만 기기에 저장해 광고를 끈다. 다른 기기에서의 구매 복원은 사용자의 Google Play 계정이 처리한다.
7. 권한
앱이 직접 선언하는 것은 android.permission.CAMERA(카메라), com.google.android.gms.permission.AD_ID, com.android.vending.BILLING이다. 나머지는 앱이 쓰는 라이브러리가 자동으로 병합한 것이다:
- INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_AD_ID / ATTRIBUTION / TOPICS — Google Mobile Ads SDK가 광고를 받아오고 측정하는 데 쓰며 자동 병합된다
- com.android.vending.BILLING — 광고 제거 인앱 구매용. Google Play가 처리한다
- WAKE_LOCK — 화면 켜둠 기능이 병합하는 권한. 기기를 물건 위에 들고 있는 동안 화면이 어두워지지 않게 한다
8. 공유와 내보내기
공유는 Android 공유 시트를 거친다. 이미지를 받을 앱은 사용자가 고르고, 그 앱이 자체 방침에 따라 이미지를 다룬다. 저장은 갤러리로 간다. 어느 경로도 개발자의 서버를 거치지 않는다.
9. 자동 백업
매니페스트는 Android 백업을 비활성화하지 않는다(allowBackup="true"). Android 기본 동작에 따라 일부 로컬 데이터가 사용자 본인의 Google 계정 기기 백업으로 복사될 수 있다. 개발자는 그 사본에 접근하거나 제어할 수 없다. 실제 백업 범위는 기기·제조사·Android 버전에 따라 다르다.
10. 보관 기간과 삭제 방법
설정은 바꾸기 전까지 남는다. 저장한 스냅샷은 갤러리에 있으며 다른 사진과 같은 방법으로 지운다. Android 설정에서 앱 데이터를 삭제하거나 앱을 제거하면 앱이 가진 데이터는 모두 사라진다. 이미 갤러리에 저장된 사진은 앱이 아니라 사용자의 것이므로 앱 제거로 지워지지 않는다.
읽기 목록의 항목은 사용자가 지울 때까지 남고, 항목을 지우면 그 항목이 보관하던 장면 이미지도 함께 지워진다. 50건을 넘으면 가장 오래된 항목부터 빠진다. 캐시에 있는 고정 장면은 임시 파일이며 앱 캐시가 비워질 때 시스템이 회수한다.
11. 아동
이 앱은 아동을 대상으로 하지 않으며 개발자는 아동의 개인정보를 고의로 수집하지 않는다.
12. 방침 변경
앱의 권한·SDK·데이터 처리 방식이 바뀌면 이 페이지와 최종 수정일을 갱신한다.
13. 문의
이 방침에 대한 문의:
- 회사: 주식회사 넥스퍼랩 (Nexperlab Co., Ltd.)
- 주소: 서울특별시 서초구 강남대로107길 21, 2층
- 이메일:
nexperlabmedia@gmail.com
プライバシーポリシー
Magnifier & Flashlight
Magnifier & Flashlight (Android) — パッケージ com.nexperlabmedia.magnifier
施行日: 2026-09-11 · 最終更新日: 2026-09-15
概要
本アプリはカメラが映しているものを拡大表示し、ライトを点灯できる。アカウント、ログイン、開発者が運営するサーバーはない。カメラ映像は画面に表示され、メモリ上でのみ処理される — 録画せず、どこにもアップロードしない。関与する第三者は Google AdMob(広告)と Google Play 課金(広告除去の購入)だけである。 バージョン 1.1.0 では 2 つが加わった。静止させたフレーム内の文字を Google ML Kit により端末内で認識し、その文字を端末に入っている音声合成 (TTS) エンジンで読み上げる — このエンジンは多くの端末で別の第三者アプリである。画像も認識されたテキストも、開発者にも Google にもアップロードされない。
| 開発者への送信データ | なし。本アプリ用の開発者サーバーは存在しない。 |
|---|---|
| アカウント・ログイン | なし。 |
| ローカルデータ | 設定(既定の倍率、カラーフィルター、画面を消さない設定、触覚フィードバック、オンボーディング完了フラグ、広告除去の状態)と読み上げリスト: 保存したフレームから認識されたテキスト、読み上げ速度と文字サイズ |
| 写真・カメラ映像 | 拡大中の自動保存はない。静止させると、そのフレーム 1 枚が認識のためアプリ専用キャッシュに書き出される。保存を押したときだけスナップショット 1 枚が端末のギャラリーに書き込まれる。読み上げを保存すると、そのフレームが PNG としてアプリ専用領域に、利用者が削除するまで残る。 |
| 認識と音声 | 文字認識 (Google ML Kit) は端末内で実行され、画像もテキストも端末から出ない。読み上げは認識されたテキストを端末の TTS エンジンに渡す — 独自のポリシーを持つ第三者アプリのことがある。 |
| 第三者 | Google AdMob(バナー・インタースティシャル広告)と Google Play 課金(広告除去の購入)。分析 SDK・クラッシュ報告 SDK は含まない。 |
| 宣言権限 | CAMERA, AD_ID, BILLING, INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_* |
1. アプリが端末に保存するもの
アプリは shared_preferences によりアプリ専用領域に設定のみを保存する: 既定の倍率、選択中のカラーフィルター、画面を消さないかどうか、触覚フィードバック、オンボーディング完了、広告除去購入と同意の状態。ログも履歴も利用者コンテンツのデータベースもない。いずれも開発者には送信されない。
1.1.0 では読み上げリストと読み上げの設定 2 つが加わった。読み上げ速度 (read_rate) と画面の文字サイズ (read_text_scale) は通常の設定値である。読み上げたものを保存すると、認識されたテキストは readings キーに、静止させたフレーム自体はアプリ専用のドキュメントディレクトリ内 readings フォルダーに PNG として書き込まれる。リストは最大 50 件で、超えると最も古い項目とその画像ファイルが一緒に削除される。直近の 1 件はホーム画面から再生できるよう別途 (last_reading、テキストのみ) 保持される。いずれもこの端末のアプリ専用領域にあり、他のアプリからは読めず、開発者にも送信されない。
2. カメラと写真
カメラのプレビューはリアルタイムに描画され、静止・フィルター機能のためメモリ上にのみ保持される。拡大表示している間、ディスクに書き込まれるものはない。保存ボタンを押すと、その 1 フレームが PNG として端末のギャラリー(MediaStore 経由、Magnifier アルバム)に保存され、以後は他の写真と同じく利用者が管理・削除できる。共有を押した場合は、アプリの一時ディレクトリに画像を書き出して Android の共有シートへ渡し、送信先は利用者が選ぶ。いずれの場合も開発者に控えは渡らない。
画面の静止は、フレームがひとりでにディスクに触れる唯一の場面である。アプリはその 1 枚をアプリ専用キャッシュディレクトリに書き出す — 端末内の文字認識が読むファイルを必要とするためである。ギャラリーには入らず、アップロードもされず、システムがアプリのキャッシュを消すときに回収される。長く残るのは、第 1 項のとおりその読み上げを保存した場合だけである。
3. 文字認識と読み上げ
静止させたフレームから、アプリはその中の文字を認識し、読み上げることができる。両者は振る舞いが異なるため分けて説明する。
- 認識は端末内で行われる。Google ML Kit のテキスト認識(ラテン文字)が静止フレームをローカルで読む。フレームも認識されたテキストもアップロードされない — 開発者にも Google にもである。マニフェストは初回の認識を待たせないよう、インストール時に認識モデルを取得させる (
com.google.mlkit.vision.DEPENDENCIES、値ocr)。これはモデルが端末へ降りてくる通信であり、利用者のデータが上がることはない。 - 読み上げは端末に入っている音声エンジンが行う。アプリは
flutter_ttsを介して認識された文を Android の TTS サービスへ渡す。どのエンジンが端末にあるかを見るため、マニフェストに android.intent.action.TTS_SERVICE の<queries>を宣言している。音声エンジンは別の第三者アプリであることが多く(メーカーが導入したもの、あるいは利用者が自ら入れたもの)、エンジンによっては端末ではなく自社サーバーで音声を合成するものもある。そのエンジンが受け取った文字をどう扱うかは、本ポリシーではなくそのエンジンのプライバシーポリシーが定める。現在のエンジンは Android の設定 → ユーザー補助 → テキスト読み上げの出力で確認・変更できる。読み上げ機能を使わなければ、テキストがエンジンへ渡ることは一切ない。
認識も発話も利用者が求めたときにのみ始まり、バックグラウンドでは動かない。開発者はいずれからも何も受け取らない。
4. アプリが収集しないもの
氏名、メールアドレス、電話番号、連絡先、メッセージ、カレンダー、位置情報、および上記以外の場所にあるファイルを要求・読み取りしない。アカウント機能もログインもクラウド同期もなく、分析 SDK・クラッシュ報告 SDK も含まれない。広告・課金 SDK が行う通信以外に、アプリ自身のネットワーク通信はない。
次の 3 つの権限は意図的に要求しない。カメラ・共有ライブラリが放置すると自動でマージするため、アプリのマニフェストで tools:node="remove" により削除している: RECORD_AUDIO(マイク — カメラは音声を無効にして動作)、READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE(旧来の共有ストレージ)。インストールされるパッケージにこれらは含まれない。
1.1.0 で追加された権限はない。端末内認識に権限は不要で、システムエンジンでの読み上げには上記の <queries> 宣言(権限ではなくパッケージの可視性)だけで足りる。インストールされるパッケージの権限一覧は変わっていない。
5. 広告 (Google AdMob) と同意
本アプリは Google Mobile Ads SDK を通じてバナー広告を表示し、操作の完了後にときどき全画面のインタースティシャル広告を表示する。広告の配信と測定のため、Google は端末の広告 ID (AD_ID)、おおまかな端末・ネットワーク情報、広告の操作記録を処理することがある。これは Google の SDK 内で行われ、開発者はそのデータを閲覧・保存しない。アプリで撮影・スキャン・保存した内容が広告 SDK に渡されることはない。
- Google のデータの取り扱い: Google のサービスを使用するサイトやアプリから収集した情報の Google による使用、Google プライバシーポリシー
- EEA・英国・スイスでは、パーソナライズド広告の利用前に Google 認定の同意メッセージ (Google User Messaging Platform, UMP) を表示する。設定 → プライバシー設定から再度開いて選択を変更できる。
- Android の設定 → プライバシー → 広告で広告 ID をいつでもリセット・削除できる。削除するとその端末でのパーソナライズド広告は停止する。
6. 広告除去の購入
買い切りのアプリ内購入 (magnifier_cam_premium) で広告が消える。決済は全面的に Google Play 課金が処理し、開発者はカード番号や請求先住所などの支払い情報を一切受け取らない(Play の集計済み売上レポートのみを見る)。アプリは購入が有効かどうかだけを端末に保存して広告を止める。別の端末での購入復元は利用者の Google Play アカウントが扱う。
7. 権限
アプリ自身が宣言するのは android.permission.CAMERA(カメラ)、com.google.android.gms.permission.AD_ID、com.android.vending.BILLING である。その他は利用しているライブラリが自動的にマージしたものである:
- INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_AD_ID / ATTRIBUTION / TOPICS — Google Mobile Ads SDK が広告の取得と測定に用い、自動的にマージされる
- com.android.vending.BILLING — 広告除去のアプリ内購入用。Google Play が処理する
- WAKE_LOCK — 画面を消さない機能がマージする権限。端末をかざしている間に画面が暗くならないようにする
8. 共有とエクスポート
共有は Android の共有シートを通る。画像を受け取るアプリは利用者が選び、そのアプリが自身のポリシーに従って扱う。保存先はギャラリーである。いずれの経路も開発者のサーバーを経由しない。
9. 自動バックアップ
マニフェストは Android バックアップを無効にしていない (allowBackup="true")。既定の動作により、対象となるローカルデータが利用者自身の Google アカウント端末バックアップへコピーされる場合がある。開発者はそのコピーにアクセス・制御できない。実際の範囲は端末・メーカー・Android バージョンによる。
10. 保存期間と削除方法
設定は変更するまで残る。保存したスナップショットはギャラリーにあり、他の写真と同じ方法で削除できる。Android の設定でアプリのデータを削除するか、アプリをアンインストールすると、アプリが持つデータはすべて消える。すでにギャラリーに保存された写真はアプリではなく利用者のものなので、アンインストールしても消えない。
読み上げリストの項目は利用者が削除するまで残り、項目を削除するとそこに保存されていたフレーム画像も一緒に消える。50 件を超えると古いものから外れる。キャッシュ内の静止フレームは一時的なもので、アプリのキャッシュが消去されるときにシステムが回収する。
11. 児童について
本アプリは児童を対象としておらず、開発者は児童の個人情報を故意に収集しない。
12. 本ポリシーの変更
権限、SDK、データの取扱いが変わった場合、本ページと更新日を改訂する。
13. お問い合わせ
本ポリシーに関するお問い合わせ:
- 会社: Nexperlab Co., Ltd. (주식회사 넥스퍼랩)
- 住所: 2F, 21, Gangnam-daero 107-gil, Seocho-gu, Seoul, Republic of Korea
- メール:
nexperlabmedia@gmail.com
Política de privacidad
Magnifier & Flashlight
Magnifier & Flashlight para Android — paquete com.nexperlabmedia.magnifier
Fecha de entrada en vigor: 2026-09-11 · Última actualización: 2026-09-15
Resumen
Esta app amplía lo que enfoca la cámara y puede encender la linterna. No tiene cuenta, ni inicio de sesión, ni servidor operado por el desarrollador. La imagen de la cámara se muestra en pantalla y se procesa en memoria: no se graba ni se sube a ningún sitio. Google AdMob (publicidad) y la Facturación de Google Play (la compra sin anuncios) son los únicos terceros implicados. La versión 1.1.0 añade dos cosas: puede reconocer el texto de un fotograma congelado con Google ML Kit en tu dispositivo y leer ese texto en voz alta mediante el motor de síntesis de voz (TTS) instalado en tu teléfono, un motor que en muchos dispositivos es una app de terceros aparte. Ni la imagen ni el texto reconocido se suben al desarrollador ni a Google.
| Datos enviados al desarrollador | Ninguno. No existe servidor del desarrollador para esta app. |
|---|---|
| Cuenta o inicio de sesión | Ninguno. |
| Datos locales | Tus preferencias (zoom predeterminado, filtro de color, mantener la pantalla encendida, vibración, el indicador de introducción, el estado sin anuncios) y la lista de lecturas: el texto reconocido de los fotogramas que guardaste, más la velocidad de lectura y el tamaño de letra |
| Fotos / imagen de la cámara | Mientras amplías no se guarda nada automáticamente. Al congelar se escribe un fotograma en la caché privada de la app para poder reconocerlo. Al pulsar guardar se escribe una única captura en la galería del dispositivo. Al guardar una lectura, ese fotograma se conserva como PNG en el almacenamiento privado de la app hasta que borras la entrada. |
| Reconocimiento y voz | El reconocimiento de texto (Google ML Kit) se ejecuta en el dispositivo; ni la imagen ni el texto salen de él. La lectura en voz alta entrega el texto reconocido al motor TTS del dispositivo, que puede ser una app de terceros con su propia política. |
| Terceros | Google AdMob (banner e intersticial) y Facturación de Google Play (la compra sin anuncios). Sin SDK de analítica ni de informes de fallos. |
| Permisos declarados | CAMERA, AD_ID, BILLING, INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_* |
1. Qué guarda la app en tu dispositivo
Mediante shared_preferences, en el espacio privado de la app solo se guardan ajustes: el zoom predeterminado, el filtro de color elegido, si la pantalla se mantiene encendida, la vibración, si se completó la introducción y el estado de la compra sin anuncios y del consentimiento. No hay registro, ni historial, ni base de datos de contenido del usuario. Nada de esto se transmite al desarrollador.
La versión 1.1.0 añade una lista de lecturas y dos preferencias de lectura en voz alta. La velocidad (read_rate) y el tamaño de letra en pantalla (read_text_scale) son preferencias corrientes. Cuando guardas una lectura, el texto reconocido se guarda bajo la clave readings y el propio fotograma congelado se escribe como archivo PNG en una carpeta readings dentro del directorio de documentos privado de la app. La lista admite un máximo de 50 entradas; al desbordarse, la más antigua y su archivo de imagen se borran juntos. La última lectura se conserva además por separado (last_reading, solo texto) para que la pantalla de inicio pueda repetirla. Todo ello es almacenamiento privado de la app en este teléfono: otras apps no pueden leerlo y nada se transmite al desarrollador.
2. Cámara y fotos
La vista previa se dibuja en vivo y, para congelar la imagen y aplicar filtros, se mantiene solo en memoria. Mientras amplías no se escribe nada en el disco. Si pulsas guardar, ese fotograma se escribe como PNG en la galería del dispositivo (a través de MediaStore, en un álbum llamado Magnifier), donde puedes conservarlo, moverlo o borrarlo como cualquier otra foto. Si pulsas compartir, la imagen se escribe en el directorio temporal de la app y se entrega al menú de compartir de Android, donde tú eliges la app de destino. En ninguno de los dos casos el desarrollador recibe copia.
Congelar la imagen es el único caso en que un fotograma llega al disco por sí solo: la app toma una sola instantánea y la escribe en su directorio de caché privado, porque el reconocimiento de texto en el dispositivo necesita un archivo que leer. No se añade a tu galería, no se sube a ningún sitio y el sistema la recupera cuando vacía la caché de la app. Solo se vuelve duradera si guardas esa lectura, como se describe en el apartado 1.
3. Reconocimiento de texto y lectura en voz alta
A partir de un fotograma congelado, la app puede reconocer el texto que contiene y leerlo en voz alta. Las dos mitades se comportan de forma distinta, así que se describen por separado.
- El reconocimiento se ejecuta en tu dispositivo. El reconocimiento de texto de Google ML Kit (alfabeto latino) lee el fotograma congelado localmente. Ni el fotograma ni el texto reconocido se suben: ni al desarrollador ni a Google. El manifiesto pide a los servicios de Google Play que descarguen el modelo de reconocimiento durante la instalación (
com.google.mlkit.vision.DEPENDENCIEScon el valorocr) para que el primer reconocimiento no tenga que esperarlo; es un modelo que baja al teléfono y no lleva nada tuyo hacia arriba. - La lectura en voz alta la realiza el motor de voz instalado en tu dispositivo. A través de
flutter_ttsla app entrega las frases reconocidas al servicio de síntesis de voz de Android, y el manifiesto declara una entrada<queries>para android.intent.action.TTS_SERVICE para poder ver qué motores existen en el teléfono. Un motor de síntesis de voz suele ser una app de terceros aparte — la que trae el fabricante o la que hayas instalado tú — y algunos motores sintetizan la voz en sus propios servidores en lugar de en el teléfono. Lo que ese motor haga con el texto que recibe se rige por su propia política de privacidad, no por esta. Puedes ver y cambiar el motor activo en Ajustes → Accesibilidad → Salida de síntesis de voz de Android. Si nunca usas la lectura en voz alta, no se entrega texto a ningún motor.
El reconocimiento y la voz solo empiezan cuando tú los pides, nunca en segundo plano, y el desarrollador no recibe nada de ninguno de los dos.
4. Qué no recoge la app
La app no solicita ni lee tu nombre, correo electrónico, teléfono, contactos, mensajes, calendario, ubicación ni ningún archivo fuera de los lugares descritos arriba. No tiene sistema de cuentas, ni inicio de sesión, ni sincronización en la nube, y no incluye SDK de analítica ni de informes de fallos. Aparte de las peticiones de los SDK de publicidad y facturación, la app no realiza peticiones de red propias.
Tres permisos no se solicitan de forma deliberada. Las bibliotecas de cámara y de compartir los añadirían por fusión, así que el manifiesto los elimina con tools:node="remove": RECORD_AUDIO (el micrófono; la cámara funciona con el audio desactivado), READ_EXTERNAL_STORAGE y WRITE_EXTERNAL_STORAGE (acceso al almacenamiento compartido heredado). No aparecen en el paquete instalado.
La versión 1.1.0 no añadió ningún permiso. El reconocimiento en el dispositivo no necesita ninguno, y hablar a través del motor del sistema solo requiere la declaración <queries> descrita arriba, que es visibilidad de paquetes y no un permiso. La lista de permisos del paquete instalado no ha cambiado.
5. Publicidad (Google AdMob) y consentimiento
La app muestra un banner y, de vez en cuando al terminar una acción, un anuncio intersticial a pantalla completa mediante el SDK de Google Mobile Ads. Para publicar y medir esos anuncios, Google puede tratar el identificador de publicidad del dispositivo (AD_ID), información aproximada del dispositivo y de la red, y eventos de interacción con los anuncios. Esto ocurre dentro del SDK de Google; el desarrollador no ve ni almacena esos datos, y nada de lo que captures, escanees o guardes en la app se le entrega.
- Tratamiento de datos por parte de Google: Cómo utiliza Google la información de sitios o aplicaciones que usan nuestros servicios y la Política de Privacidad de Google
- En el EEE, el Reino Unido y Suiza la app muestra un mensaje de consentimiento certificado por Google (Google User Messaging Platform, UMP) antes de usar publicidad personalizada. Puedes volver a abrirlo en Ajustes → Configuración de privacidad y cambiar tu elección.
- Puedes restablecer o eliminar el identificador de publicidad cuando quieras en Ajustes → Privacidad → Anuncios de Android. Al eliminarlo se detiene la publicidad personalizada en el dispositivo.
6. Compra sin anuncios
Una compra única dentro de la app (magnifier_cam_premium) elimina los anuncios. El pago lo procesa por completo la Facturación de Google Play: el desarrollador nunca recibe tu número de tarjeta, tu dirección de facturación ni ningún otro dato de pago, y solo ve los informes de ventas agregados de Play. La app guarda localmente si la compra está activa para dejar de mostrar anuncios. La restauración de la compra en otro dispositivo la gestiona tu cuenta de Google Play.
7. Permisos
La app declara por sí misma android.permission.CAMERA (la cámara), com.google.android.gms.permission.AD_ID y com.android.vending.BILLING. Los demás los añaden automáticamente las bibliotecas que utiliza:
- INTERNET, ACCESS_NETWORK_STATE, ACCESS_ADSERVICES_AD_ID / ATTRIBUTION / TOPICS — los añade el SDK de Google Mobile Ads para obtener y medir anuncios
- com.android.vending.BILLING — la compra sin anuncios, gestionada por Google Play
- WAKE_LOCK — lo añade la función de mantener la pantalla encendida, para que no se atenúe mientras sostienes el teléfono sobre algo
8. Compartir y exportar
Compartir pasa por el menú de compartir de Android: tú eliges la app que recibe la imagen y esa app la trata según su propia política. Guardar va a tu galería. Ninguna de las dos rutas pasa por un servidor del desarrollador.
9. Copia de seguridad automática
El manifiesto no desactiva la copia de seguridad de Android (allowBackup="true"). Por comportamiento predeterminado, algunos datos locales pueden copiarse a la copia de seguridad de tu propia cuenta de Google. El desarrollador no puede acceder a ella ni controlarla. El alcance real depende del dispositivo, el fabricante y la versión de Android.
10. Conservación y borrado
Los ajustes permanecen hasta que los cambies. Las capturas guardadas viven en tu galería y se borran como cualquier foto. Borrar los datos de la app en los ajustes de Android, o desinstalarla, elimina todos los datos propios de la app; las fotos ya guardadas en la galería no se borran al desinstalar, porque son tuyas y no de la app.
Las entradas de la lista de lecturas permanecen hasta que las borras; al borrar una entrada se borra también la imagen del fotograma guardada con ella, y la lista descarta la más antigua al pasar de 50. El fotograma congelado de la caché es transitorio y el sistema lo recupera al vaciar la caché de la app.
11. Menores
La app no está dirigida a menores y el desarrollador no recoge deliberadamente información personal de menores.
12. Cambios en esta política
Si cambian los permisos, los SDK o el tratamiento de datos de la app, se actualizarán esta página y su fecha.
13. Contacto
Preguntas sobre esta política:
- Empresa: Nexperlab Co., Ltd.
- Dirección: 2F, 21, Gangnam-daero 107-gil, Seocho-gu, Seoul, Republic of Korea
- Correo:
nexperlabmedia@gmail.com