Effective: October 18, 2026
Baro Japanese Dictionary and its developer process only the minimum information needed to show a handwriting dictionary over other apps. Questions and deletion requests can be sent through the developer contact on the Google Play listing.
Accessibility features are used only after the user adds the optional Accessibility button, accepts the in-app disclosure, and enables the service in Android Settings. The service opens and closes the panel, inserts a query only when requested, and supports automatic readable text colors.
Only when the displayed query is held does the app read the last selected text field, selection, and cursor position to insert the query. While automatic text style is active, the app can capture the screen behind the open panel and analyze brightness, color, and pattern. Screen pixels and text-field content are processed only in device memory. They are not saved, transmitted, or shared and are discarded when no longer needed. Protected screen capture restrictions are not bypassed.
The Bubble button appears only after the user explicitly taps Turn on Bubble button in the app, and it remains available when Accessibility is added. While Accessibility consent is absent or the service is disconnected, the app does not call Accessibility event, window, node, screen-capture, or input-control features. Holding the query then copies it to the Android clipboard. Android and other apps control access to clipboard content.
Google ML Kit processes handwriting strokes on the device. The app does not send handwriting or recognition candidates to the developer. Korean and English dictionary searches use downloaded local databases.
Up to 25 recent queries per dictionary language can be stored in app-only storage with readings, up to three definition summaries, and associated strokes. These records are excluded from Android cloud backup and device transfer and are deleted when app storage is cleared or the app is uninstalled.
Looking words up by handwriting or voice and viewing meanings and readings remain free. Premium, a one-time purchase, unlocks stroke order (playback, stroke numbers and scrubbing), follow-up search, and opening recent searches in the handwriting panel, and stops reminders. Anyone can try these features in the tutorial. No Premium reminder appears for 14 days after the first launch. After that, a reminder appears every 5 to 10 handwriting-panel openings, a number chosen at random each time. Only an actual closed-to-open transition is counted.
The app locally stores the first-open time, device-record consent state, panel-opening count for the reminder schedule, and cached purchase state. This local state is excluded from Android cloud backup and device transfer. Queries, definitions, the time of each opening, and screen content are not recorded for this decision.
To prevent reinstall or cleared app data from restarting the 14-day period, the app derives a purpose-specific SHA-256 hash from the app-scoped ANDROID_ID. After the app automatically applies the device-matched language on first launch, a separate disclosure first explains the data and purpose. The hash is not read or sent to Firestore until the user taps Agree and continue, and the user can choose Exit app instead. If Google Play confirms an existing Premium purchase, the app closes or skips this disclosure and does not start device-reference synchronization. The raw Android ID is not stored in app files, logs, or the server. Firebase Cloud Firestore uses the 64-character hash as a document key and stores only a schema version and the first server-seen time. The document does not contain queries, definitions, handwriting, panel-opening counts, or purchase state.
If the server recognizes an existing device after the free period, the next panel opening shows one reminder and then a reminder again appears every 5 to 10 openings. A factory reset, another Android user, another device, a signing-key change, or no network connection can prevent recognition. The server record is retained while needed to prevent reminder resets. The in-app privacy screen displays the full selectable device reference, which can be included in a deletion request sent through the Google Play developer contact.
The default Firestore database is configured in nam5, a United States multi-region, rather than a single worldwide region. Premium-reminder first-seen records sent from outside the United States can be transferred to, stored in, and processed in the United States.
Premium is a one-time, non-consumable Google Play purchase. Google Play processes the account, price, payment method, and transaction. The app temporarily receives the product ID, purchase state, and purchase token to grant and acknowledge the purchase but does not store payment details or the token in its own files or on a developer server.
To decide when to ask for a Google Play review, the app keeps only on the device the dates in the last 14 days on which a handwriting-panel search showed results, the time of its last review request, and whether the Google Play page was opened from the app. It does not record what was searched, and this state is excluded from Android cloud backup and device transfer. Google Play shows the review card under its own policies and does not tell the app whether a review was left.
The selected dictionary pack is delivered by Google Play Asset Delivery. Google Play can process the device, Play account, network, and download status needed for delivery. After download, queries and results are not sent to Google Play or the developer to use the pack.
The microphone is used only while the user has started voice search, and the app does not store audio. The speech recognition provider configured on Android can process audio and recognition results on its servers under its own policy.
Google ML Kit does not send the content of entered handwriting or recognition results to Google. For diagnostics and usage analysis it can collect the device manufacturer, model and OS, app package and version, per-install identifiers, API configuration, input and output sizes, processing time and performance, execution and error information, and configured languages.
Firebase Crashlytics diagnoses crashes and application not responding errors. When a failure occurs it can automatically send stack traces, exception class and message, relevant app state, app and device metadata, failure time, a Crashlytics installation UUID, Firebase installation ID, and session information. For handled dictionary lookup errors, the app sends only the stack trace, exception classes, a cause category, the dictionary installation state and a free-storage range, without exception messages. Firebase Sessions processes quality metrics such as the app package, OS, SDK and network connection type, device manufacturer and model, and foreground session start time.
The developer does not add queries, recent searches, handwriting, screen content, or text-field content as Crashlytics user IDs, custom keys, or logs. Firebase states that Crashlytics stack traces and associated identifiers are kept for 90 days before deletion starts.
Firebase App Check helps reduce forged app access to Firestore. In production it processes a Google Play Integrity token and Firebase user agent. The user agent can include the OS, device name, model, brand and form factor, installer, and Firebase SDKs and versions. Firebase Installations creates a per-installation ID. That ID can change after reinstall, so the Premium-reminder record uses the separate app-scoped Android ID hash described above.
The app uses Google Analytics for Firebase to measure onboarding (the dictionary download, free-use notice and tutorial), permission setup, input methods, search outcomes, overlay use, learning features, Premium reminders, and app sharing or rating actions. Parameters contain categories such as UI language, search direction, lookup status (results present, no results, or processing error) and dictionary download failure type. Search text, dictionary content, handwriting, audio, screen or text-field content, purchase tokens, and the Premium-reminder device reference are never attached to Analytics events. The app does not set an Analytics user ID.
The SDK also collects installation and session events, Activity screen transitions, engagement, and eligible Google Play purchases, together with an app-instance identifier and technical information such as app version, device model, OS and language. IP addresses are used to derive approximate location. This is not anonymous data. Advertising ID collection, advertising storage, advertising user data, and personalized advertising are disabled in the app.
Usage analytics is enabled by default in all builds, including debug. Your saved choice is preserved when the app is updated. You can turn it off at Settings → App information → Usage analytics without losing dictionary features. Turning it off stops future Analytics collection and resets local Analytics data and its app-instance identifier; it does not delete previously received server data or disable Crashlytics. Analytics retention follows the configured Google Analytics property retention period. Google may process this data outside your country under its privacy policy. When Analytics is enabled, Crashlytics can use these same content-free events as breadcrumbs preceding a crash.
This policy and the license page are served by Firebase Hosting. Hosting processes visitor IP addresses to provide the service and detect abuse and, according to Firebase, can retain them for a few months.
Firebase encrypts information in transit with HTTPS and encrypts Firestore and Crashlytics data at rest. Access to Premium-reminder records and the Firebase project is limited to developers who need it. The developer does not collect or sell screen content, text-field content, handwriting, audio, recent searches, or the panel-opening count used for the free use notice.
Firebase processing follows the Google Privacy Policy, Firebase privacy and security information, and Firebase Android data disclosure.