1. Who We Are
SoftPlex Inc. ("SoftPlex", "we", "our", or "us") is the developer and publisher of the Charge Control Android application, distributed through Google Play. Our registered business address is in Halifax, Nova Scotia, Canada, with operations in Niigata, Japan, and technical leadership based in Poland, European Union.
SoftPlex Inc. is the data controller for personal information processed in connection with Charge Control. We are committed to compliance with Canada's Personal Information Protection and Electronic Documents Act (PIPEDA), the EU General Data Protection Regulation (GDPR), Japan's Act on the Protection of Personal Information (APPI), and the Google Play Developer Program Policies.
For all privacy enquiries, you may reach us at support@softplex.io.
2. Scope of This Policy
This Privacy Policy applies solely to the Charge Control mobile application for Android. It explains what information the app accesses on your device, what information is collected and shared, and the choices available to you. Use of the SoftPlex website (softplex.io) is governed by our separate website Privacy Policy.
Some behaviour described below can be tuned remotely (for example, the catalog of supported charge-control files can be extended without an app update), so details may vary slightly between app versions. This policy describes everything the App is capable of doing so that it is complete before a change reaches you.
3. How the App Works & What It Accesses
Charge Control is a battery charging limiter. You set an upper and a lower charging threshold (for example, "stop charging at 80%, resume at 75%"), and the App switches charging on and off to match, helping to reduce long-term battery wear. On a rooted device it does this at the kernel level (§4); without root, it can instead switch a smart plug that your charger is plugged into (§5). To do this, the App reads battery information from Android's battery service and from kernel files — such as charge level, charging status, voltage, temperature, electric current (mA), battery health, and battery technology — and displays them in a live dashboard, including a current-flow graph and an estimated time to full charge. An optional foreground service can run for roughly fifteen minutes during a charge to estimate your battery's real capacity.
Your battery history stays on your device. Charge Control has no account system and no cloud sync. Battery readings, charge-session history, capacity measurements, and your settings are stored and processed locally, and we never sell any of it.
Three things can carry some of this information off your device, and each is described in full in its own section:
- Device-support sharing (off unless you turn it on): if you enable Help improve device support, the App sends us which charge-control files exist on your device and which of them worked, together with your device's model and build details, so that support for devices like yours can be added for everyone. No battery readings and no settings of yours are included. See §11.
- A feedback report you choose to send: if you attach diagnostic info to it, the report includes your charge-control setup, a current battery reading, and a summary of your last few charge sessions. You can preview it or leave it out before sending. See §12.
- Usage analytics: these record which features you use and the settings you apply — for example the charging thresholds you choose, or the result of a capacity measurement — but never a continuous record of your battery. See §10.
The App's network access is used only for advertising in the free version (§8), switching a smart plug if you set one up (§5), analytics and crash reporting, remote configuration, downloading the catalogue of known charge-control files, the optional device-support reports described in §11, sending feedback you choose to send and loading the list of our other apps (§12), and Google Play services such as billing and in-app updates — each described in its own section below.
4. Root Access & Changes Made to Your Device
Because Android provides no standard way for an app to stop charging, Charge Control's root engines require root (superuser) access and make the following changes on your device. If you use the smart plug engine instead (§5), the App does not use root and makes none of these changes. None of this involves sending data anywhere — it is described here for full transparency about what the App does with the elevated access you grant it:
- It writes to kernel charging-control files. The App writes on/off values to your device's charging-control file (for example
/sys/class/power_supply/battery/charging_enabledor a vendor equivalent) to pause and resume charging. - It installs a small helper module. So that your thresholds keep working while the App is closed and after a reboot (if you enable auto-run), the App installs a lightweight shell script module under
/data/adb/modules/ChargeControlCC. The module stores only your thresholds and control-file configuration. It removes itself and restores normal charging if the App is uninstalled. - Automatic control-file discovery. To find the correct charging-control file for your device, the App matches your device model against a built-in catalog — extended both by remote configuration (see §10) and by a public catalogue built from the reports of users who opted into device-support sharing (see §11) — and, where needed, scans the kernel's power-supply directories for candidate files. Before verifying a candidate, the App asks for your one-time consent, because verification briefly pauses charging (about 1–2 seconds) while the device is plugged in. Charging is always restored afterwards.
- Optional battery-statistics reset. If you use this feature, the App runs Android's built-in battery-statistics reset command on your device.
- Battery-optimization exemption. The App adds itself to Android's battery-optimization allowlist so the system does not stop it from managing your charging.
- Custom control files. Advanced users may enter a custom control file and values manually. This is entirely optional, is preceded by an in-app disclaimer, and is stored only on your device.
The device identifiers used for control-file discovery (manufacturer, device codename, and kernel version) are combined into a fingerprint that is cached locally on your device. It is not uploaded. When the App downloads the public catalogue it requests the entry for a one-way hash of your manufacturer and device codename, so that request reveals the model of device asking and nothing about you or your installation. If — and only if — you turn on Help improve device support, those same device details are included in the reports described in §11.
5. Smart Plug Control (Optional)
If your device is not rooted, or you prefer not to use root, you can let Charge Control switch a smart plug instead: the plug turns your charger off when the battery reaches your upper threshold and back on at your lower threshold. This is entirely optional. Nothing in this section happens unless you set up a plug in the App.
To do this the App sends on/off and status commands to the plug you set up. What else is sent, and to whom, depends on the type of plug:
- TP-Link Kasa plugs — commands go directly to the plug over your own local network. During setup the App can search your Wi-Fi network for Kasa plugs. Nothing is sent to TP-Link, to us, or over the internet.
- Govee plugs — Govee plugs are controlled through Govee's cloud, so the App sends your Govee API key (which you obtain from Govee and enter yourself), the plug's model and device ID, and the on/off command directly from your device to Govee's servers (
openapi.api.govee.com) over an encrypted connection. This data goes to Govee, not to us, and is governed by Govee's privacy policy. - Webhook plugs — the App calls only the on and off web addresses you enter. Addresses on your local network may use plain HTTP; addresses on the internet must use encrypted HTTPS.
Your plug settings — its name, local network address and device ID, any Govee API key, and any webhook addresses — are stored only on your device, in the App's private storage. They are excluded from Android's device backup and device-to-device transfer, are never sent to SoftPlex, and are kept out of crash reports. No battery readings, settings, or identifiers for your phone are sent to any plug or plug vendor; a plug only ever receives on/off and status commands.
While smart plug control is on, the App runs a foreground service with a visible notification so that it can keep watching the battery level and switch the plug at the right moments, including after your device restarts. You can remove the plug at any time in the App; its settings are deleted once the App has switched the plug back on.
6. Information We Collect
Charge Control does not require you to create an account or provide your name, email, or contact details to function. The only time it asks for an email address is when you send us feedback, and even then it is optional (§12). The information processed falls into the following categories:
| Category | Examples | Collected by | Leaves device? |
|---|---|---|---|
| Battery & charging telemetry | Charge level, charging status, voltage, temperature, current (mA), battery health and technology, measured capacity, current-flow history | The app (local) | No — read, displayed, and stored on your device only |
| Thresholds, settings & preferences | Charging thresholds, auto-run after boot, charge-over-USB, temperature unit, notification and theme settings, control-file configuration | The app (local; helper module config on device) | No — stays on device (may be included in Android's own device backup, see §16) |
| Device fingerprint for discovery | Manufacturer, device codename, kernel version — used to pick the right charging-control file | The app (local) | No — cached on device only (the same details are included in a device-support report if you opt in; see the row below and §11) |
| Device-support reports (optional, off by default) | Charge-control file paths and the values written to them, which of them worked or misbehaved, device manufacturer, brand, model, codename, chipset, Android version, ROM build, kernel version, app version, and a random identifier generated on first opt-in | SoftPlex, via Firebase Realtime Database | Yes — only while you have Help improve device support switched on; see §11 |
| Feedback reports (optional) | The category, title and message you write, the email address you choose to give (if any), app version, Android version, device manufacturer and model, and the App's language | SoftPlex, via Cloud Firestore in our support project | Yes — only when you tap Send on a feedback report; see §12 |
| Diagnostic info (optional, attached to a feedback report) | Device model, codename, Android build and kernel version; whether root is available; the charging engine and whether it is running; your thresholds and temperature and charging-speed limits; the charge-control and charging-speed files in use; a current battery reading (level, status, temperature, current); and the start and end times, levels and peak temperature of your last few charge sessions | SoftPlex, via Cloud Firestore in our support project | Yes — only when attached to a feedback report you send. You can preview it and switch it off first; see §12 |
| Smart plug settings (optional) | Plug name, local network address and device ID, Govee API key, webhook addresses | The app (local) | Stored on your device only and excluded from backup. For Govee plugs, the API key and device ID are sent directly to Govee to control the plug; never to SoftPlex (see §5) |
| Purchase & entitlement data | Confirmation from Google Play that the one-time ad-removal product was purchased | Google Play Billing | Handled by Google; verified on your device — we operate no purchase server (see §9) |
| Analytics | Pseudonymous app-instance identifier, app opens, sessions, screens viewed, device model, OS version, app version, coarse (country-level) region; events about the features you use and the settings you apply (for example charging thresholds and limits, which charge-control file is in use, capacity-measurement results, ad and purchase outcomes) | Firebase Analytics (Google) | Yes — see §10 |
| Diagnostics & crash logs | Crash stack traces, ANR reports, app version, device model, OS version, and app state at the time (such as the screen in use, your thresholds and the charge-control file in use); anonymised app performance traces | Firebase Crashlytics & Firebase Performance Monitoring (Google) | Yes |
| Push-notification token | A Firebase Cloud Messaging registration token that allows service messages to be delivered to the App | Firebase Cloud Messaging (Google) | Yes — token registration only; the App runs no messaging campaigns of its own |
| Advertising identifiers | Google Advertising ID (AD_ID) and limited technical signals used to serve and measure ads | AppLovin MAX & mediation partners | Yes — free version only, see §8 |
We do not collect location, contacts, photos, SMS or call logs, microphone, or camera data, and the App requests no permissions that would allow it to.
7. How We Use Information
- To provide core functionality — reading battery state, applying your charging thresholds through root access, running the helper module, and powering the live dashboard, statistics, and capacity measurement.
- To control a smart plug — if you set one up, sending on/off commands to it at your charging thresholds (§5).
- To find the right charging-control file for your device — matching your device against the built-in and remotely-updated catalog of known control files.
- To extend support to devices we do not own — if, and only if, you opt in, using the device-support reports described in §11 to build the public catalogue of charge-control files that every copy of the App downloads.
- To verify purchases and unlock what you paid for — confirming the ad-removal purchase with Google Play and applying it on your device.
- To answer your feedback and fix what you report — reading the reports you send, replying if you gave an email address, and using any diagnostic info you attached to find the cause (§12).
- To understand how the app is used and keep it stable — aggregate usage analytics, performance traces, and crash reports help us prioritise work and fix bugs.
- To display advertising — for users on the free version, to support ongoing development (see §8).
- To show service notifications — where you have permitted notifications, for the capacity-measurement service, smart plug control, and charging status.
We do not use your information for unsolicited marketing, and we do not sell personal information.
8. Advertising & Consent
The free version of Charge Control displays advertising through AppLovin MAX, which mediates ads from partner ad networks including Google AdMob, Google Ad Manager, Meta Audience Network, Unity Ads, Liftoff/Vungle, Chartboost, and Pangle (ByteDance). Ad formats used are banner ads, native ads embedded in some screens, and an optional rewarded video (see below). These networks may use your device's advertising identifier and limited technical signals to serve and measure ads, including personalized ads where permitted.
If you are in a region that requires it (such as the European Economic Area, the United Kingdom, or Switzerland), the App presents a consent request on first launch using Google's User Messaging Platform. You can grant or refuse consent for personalized advertising, and you can change your choice later in Settings → Ad Privacy Options. In those regions your choice also applies to analytics (§10). You can also limit ad tracking at any time through your device's settings (Settings → Privacy → Ads) to reset or delete your advertising ID.
Two options remove advertising entirely:
- a one-time ad-removal purchase (see §9); and
- an optional rewarded video — watching one ad grants a 3-day ad-free pass, recorded as a simple timestamp on your device.
Ad-blocker check. The free version can check whether an ad blocker is active by looking up a few well-known advertising domain names and noting whether they resolve normally. This check is switched off at the time of writing and can be turned on remotely. When it is on and a blocker is detected, some secondary screens (such as additional settings, notification, temperature and charging-speed settings, schedules, themes and our other apps) ask you to pause the blocker or remove ads; charging control itself keeps working. The outcome of the check (whether a blocker was detected and how many look-ups failed) is recorded in analytics. The App does not inspect your network traffic, the sites you visit, or your DNS settings.
9. Purchases
Charge Control offers a single optional paid product: a one-time, non-consumable ad-removal purchase. Purchases are processed by Google Play Billing. Google does not share your full payment details with us — the App receives confirmation from Google Play that the purchase exists and applies your entitlement on your device.
We operate no purchase server: no purchase token, receipt, or payment information is sent to SoftPlex. Your entitlement is tied to your Google account and is restored automatically by querying Google Play when you reinstall or switch devices.
10. Analytics, Diagnostics & Remote Configuration
Charge Control uses Firebase Analytics to understand how the app is used in aggregate, Firebase Crashlytics to detect and fix crashes, and Firebase Performance Monitoring to measure app start-up and screen performance.
Alongside Firebase's standard automatic collection — app opens, session counts, screens viewed, and technical information such as a pseudonymous app-instance identifier, device model, operating-system version, app version, and coarse (country-level) region — the App logs events about how its features are used, so that we can see what works and what fails on real devices. These include:
- turning charge control on or off and whether it succeeded; the charging thresholds, temperature limit and charging-speed limit you apply;
- control-file discovery and verification: the method used, how many candidates were found, whether one was confirmed, and the path of the charge-control file selected (a system file path such as
/sys/class/power_supply/battery/charging_enabled); - capacity measurements: when one starts, and the measured capacity in mAh when it finishes or the reason it was rejected;
- ads, purchases and Google Play: ad impressions (including estimated ad revenue), ad load failures, the ad-blocker check (§8), the rewarded ad-free pass, the ad-removal purchase flow and its result, in-app update and review prompts, and whether Google Play services are available;
- feedback and our other apps: whether a feedback report was sent or failed, its category and whether diagnostic info was attached — never what you wrote — and taps in the More Apps list (§12); and
- a few settings used to group these events: whether root is available, whether a control file is set, whether the service is on, ad-free status, theme, and temperature unit.
Analytics never include a continuous record of your battery, your charge history, your email address, or the contents of a feedback report. These events are not tied to your name or any account — the App has none — and clearing the app's data or uninstalling the App resets the app-instance identifier. Where consent is required (§8), analytics storage is denied until you have made a choice in the consent form, and then follows that choice.
Crashlytics reports contain the technical state of the app at the moment of a crash or handled error: a stack trace, app version, device model, OS version, and context such as the screen in use, whether root is available, your charging thresholds, and the charge-control file in use. They are not used for any purpose other than diagnosing faults.
The App also uses Firebase Remote Config to download an updated catalog of known charging-control files, so that support for new devices can be added without an app update, and to switch a small number of features on or off without an update (such as the smart plug engine and the ad-blocker check in §8). Like any Firebase service, Remote Config receives standard technical information to deliver the right configuration (such as a Firebase installation identifier, app version, and device language); nothing about your battery or settings is uploaded through it. The list of our other apps is downloaded the same way from our support project (§12). Firebase Cloud Messaging registers a push token so that occasional service messages could be delivered; the App does not run marketing push campaigns and does not subscribe you to any topics.
Separately from all of the above, the App downloads a public catalogue of known charge-control files from a Firebase Realtime Database we operate. That download carries no identifier for you or your installation; the only thing it discloses is a one-way hash of the device model whose entry is being requested, which is how the right entry is found. Sending anything to that database is a separate, opt-in choice described in §11.
11. Optional Device-Support Data Sharing
Every manufacturer controls charging differently, so the kernel file that stops charging on one phone frequently does not exist on the next. The only practical way to support a device we do not own is for someone who owns one to tell us what worked on it. Charge Control can do that for you — but only if you ask it to.
This sharing is off by default. It is offered as a step during first-time setup, which you may skip, and it lives in Settings → Additional Settings → Help improve device support, where you can turn it off again at any time. While the switch is off, nothing described in this section ever leaves your device.
With the switch on, the App sends a report containing:
- the charge-control files it found on your device, the values it wrote to them, and which of them actually stopped charging, did nothing, or misbehaved;
- your device's manufacturer, brand, model, codename, chipset, Android version, ROM build number, and kernel version;
- the app version and which control engine it is using; and
- a random identifier the App generates the first time you enable sharing, so that repeated reports from one phone are counted once instead of as many different devices. It is not derived from any hardware identifier, is not your advertising ID, and is not linked to your name, your Google account, or anything else you do in the App. Turning the switch off deletes it from your device; switching sharing back on later generates a new, unrelated one.
Reports contain no battery readings — no charge level, voltage, temperature, current, or capacity history — and none of your thresholds or other settings. A report is sent only when what the App found has changed, not continuously.
What happens to a report. Reports are stored in a Firebase Realtime Database operated by SoftPlex, with Google acting as our hosting provider and processing the data on our instructions. The App can only write to it: it cannot read back what it or anyone else has sent, and reports are not publicly readable. A server process groups reports by device model, and once the same charge-control file has been reported as working by at least three separate installations, that file is added to a public catalogue which every copy of the App downloads in order to configure itself. Reports that a file did nothing, or that it latched a charger, take it back out again.
A published catalogue entry contains only the file paths and the values written to them, how many confirmations it has, how many separate installations contributed, the Android and ROM versions it has been seen on, and when it was last confirmed. Your random identifier is never published — only the number of distinct identifiers behind an entry is.
We use this data for exactly one purpose: making charge control work on more devices. It is not used for advertising, is not combined with analytics or crash reports, is not used to profile you, and is not sold or disclosed to third parties.
12. Feedback, Support & More Apps
Sending feedback. Settings → Contact Us lets you report a problem, suggest an idea, or ask a question from inside the App. Nothing is sent until you tap Send. A report contains:
- the category you pick, and the title and message you write;
- an email address, only if you choose to give one so that we can reply;
- the app version, Android version, device manufacturer and model, and the App's language; and
- diagnostic info, if you leave it attached. The Include diagnostic info switch is on by default, you can tap View what's included to read exactly what will be sent, and you can switch it off before sending. It contains your device's model, codename, Android build and kernel version; whether root is available; the charging engine in use and whether it is running; your thresholds and your temperature and charging-speed limits; the charge-control and charging-speed files in use and the values written to them; a current battery reading (level, charging status, temperature, current); and the start and end times, battery levels and peak temperature of your last five charge sessions. It contains no install ID, advertising ID, or account information.
Reports are stored in Cloud Firestore in a Firebase project that SoftPlex operates for support requests across its apps, with Google acting as our hosting provider and processing the data on our instructions. So that you can send a report without creating an account, the App signs in to that project anonymously: Firebase Authentication issues a random user identifier, which is kept on your device and used only to limit how often reports can be sent (one a minute), so the service cannot be flooded. It is not linked to your name, your Google account, your advertising ID, or your analytics identifier. The App can only create reports; it cannot read back, change, or delete a report once sent, and reports are not publicly readable.
We use reports only to answer you and to fix or improve the App. If you gave an email address, we use it only to reply about your report; we do not add it to any mailing list. Analytics record only that a report was sent or failed, its category, and whether diagnostic info was attached — never its contents (§10).
Sending by email instead. If a report cannot be sent, the App offers to open your email app with a draft containing what you wrote and the same app, Android and device details. You can read and edit the draft, and nothing is sent unless you send the email yourself; it is then handled by your email provider and ours.
Exporting a diagnostic report. The charge history screen can save the same kind of diagnostic report as a file to a location you choose. That file is written to your device only; nothing is sent unless you share it yourself.
More Apps. The More Apps screen lists other apps by SoftPlex. The list is downloaded with Firebase Remote Config from the same support project, which receives the standard technical information described in §10 (such as a Firebase installation identifier). App icons and images are loaded from Google's image servers. To avoid listing an app you already have, the App checks on your device whether each listed SoftPlex app is installed; nothing about your installed apps is sent anywhere. Opening an entry takes you to its Google Play page.
13. Third-Party Services
Charge Control relies on the following third-party services, each governed by its own privacy policy:
- Google Firebase Analytics, Crashlytics, Performance Monitoring, Remote Config, Cloud Messaging & Realtime Database (product analytics, crash reporting, performance monitoring, feature configuration, push delivery, and hosting for the charge-control file catalogue and the optional device-support reports described in §11) — firebase.google.com/support/privacy
- Google Firebase Authentication, Cloud Firestore & Remote Config in our support project (anonymous sign-in and storage for feedback reports you send, and the list of our other apps, see §12) — firebase.google.com/support/privacy
- AppLovin MAX (ad mediation) — applovin.com/privacy
- Google AdMob & Google Ad Manager (mediated ad networks) — policies.google.com/privacy
- Meta Audience Network — facebook.com/privacy/policy
- Unity Ads, Liftoff/Vungle, Chartboost, and Pangle (ByteDance) — mediated ad networks, each with its own privacy policy.
- Google Play Billing (ad-removal purchase) — handled by Google; we do not receive your full payment details.
- Govee (only if you set up a Govee smart plug; receives your Govee API key, the plug's device ID and on/off commands, see §5) — us.govee.com/pages/privacy-policy
- Google Play in-app updates (checking for and downloading app updates) — handled by Google Play.
We do not control how these third parties use information collected directly by their SDKs. We encourage you to review their respective policies.
14. Android Permissions
Charge Control requests only the permissions needed for its features:
| Permission | Why it is used |
|---|---|
| Root / superuser access | Not an Android runtime permission but granted by your root manager: pausing and resuming charging via kernel control files, installing the helper module, and the other actions described in §4. |
FOREGROUND_SERVICE, FOREGROUND_SERVICE_SPECIAL_USE | Running the optional battery-capacity measurement service (approximately 15 minutes), and the smart plug control service while it is switched on (§5), each with a visible status notification. |
POST_NOTIFICATIONS | Showing the capacity-measurement and smart plug notifications, and charging status notifications you enable. |
ACCESS_LOCAL_NETWORK | Finding and controlling a smart plug on your Wi-Fi network (Android 17 and later; requested only from the smart plug screens, see §5). |
RECEIVE_BOOT_COMPLETED | Resuming charge control, including smart plug control, after your device restarts. |
WAKE_LOCK | Keeping the device awake briefly while a smart plug command is sent, so the plug is switched at the right time. |
AD_ID | Access to the Google Advertising ID for serving and measuring ads (free version). |
com.android.vending.BILLING | Offering the ad-removal purchase through Google Play. |
INTERNET, ACCESS_NETWORK_STATE | Delivering ads, sending analytics and crash reports, fetching the remote control-file catalog, controlling a smart plug (§5), sending feedback reports you choose to send and loading the More Apps list (§12), and Google Play billing and in-app updates. |
The App requests no location, storage, contacts, camera, microphone, Bluetooth, or usage-access permissions. Advertising and analytics SDKs bundled with the App may declare additional standard technical permissions of their own (such as wake lock or the Android AdServices permissions) under their respective policies.
15. Legal Basis for Processing (GDPR)
If you are located in the European Economic Area or the United Kingdom, our legal bases are:
- Performance of a contract / legitimate interests — providing the charging control you requested, keeping the app stable and secure, verifying purchases so you receive what you paid for, answering the feedback you send us (§12), and supporting the advertising that funds the free version.
- Consent — for personalized advertising; for the optional device-support sharing described in §11, which is off unless you switch it on; where required in your jurisdiction, for analytics; and, in-app, for the one-time control-file verification step that briefly pauses charging (§4). You may withdraw consent at any time (see §8, §11 and §17).
- Legal obligation — where processing is required to comply with applicable law.
16. Data Retention
All app data held on your device — thresholds, settings, control-file configuration, measured capacity, and the helper module's configuration — remains until you change it, clear the app's data, or uninstall the App. Uninstalling also causes the helper module to remove itself and restore normal charging. Smart plug settings (§5) are deleted when you remove the plug in the App and are never included in device backups. Because the App participates in Android's standard app backup, your other settings may be included in your device's own Google backup under your Google account's control; you can disable this in your device's backup settings.
Device-support reports (§11), if you have opted in, are retained for as long as they remain useful evidence for the charge-control file catalogue — a report is the record of why a file is recommended for a device, so deleting it removes that justification. They carry no name, account, or contact details. Turning the switch off stops any further reports and deletes the random identifier from your device, which severs the link between your phone and anything already sent; you can also ask us to delete what has been sent (see §17).
Feedback reports (§12) are kept while we work on the issue they describe and for as long as they remain useful for tracking it, and are then deleted. You can ask us to delete a report at any time (see §17). The anonymous identifier used to send them stays on your device until you clear the app's data or uninstall the App.
Analytics data is retained by Firebase Analytics for the retention period configured in our Firebase project, after which event-level data is deleted. Crash and performance data retained by Firebase is kept according to Google's default retention periods. Advertising data is retained by the respective ad networks per their policies. Purchase records are retained by Google Play under Google's policies.
17. Your Rights & Choices
Depending on your jurisdiction (GDPR, PIPEDA, APPI, and similar laws), you may have the right to access, correct, delete, restrict, or object to the processing of your personal information, and to data portability. You can exercise the following controls directly:
- Reset or delete your advertising ID via your device's Settings → Privacy → Ads.
- Withdraw advertising consent via the consent flow described in §8.
- Remove ads entirely with the one-time purchase, or temporarily with the rewarded 3-day pass.
- Turn off device-support sharing in Settings → Additional Settings → Help improve device support. No further reports are sent, and the random identifier is deleted from your device.
- Leave out diagnostic info or your email when sending feedback (§12): both are optional, and the diagnostic info can be previewed before sending.
- Remove your smart plug in the App's smart plug settings; this deletes its address, device ID, and any Govee API key or webhook addresses from your device once the plug has been switched back on. You can also revoke the API key itself in your Govee account.
- Revoke root access at any time in your root manager app; charging control simply stops working.
- Remove all on-device data by clearing the app's data or uninstalling the App — this also removes the helper module, restores normal charging, and resets the analytics app-instance identifier.
- Disable notifications via system settings.
- Exclude the App from device backup via your device's backup settings.
To make a formal request regarding personal information held by us, contact support@softplex.io. We will respond within the timeframes required by applicable law. Device-support reports (§11) carry no name, account, or contact details, so to locate yours we will need the device model and the approximate dates on which sharing was enabled; tell us in your request and we will find and delete them. To delete a feedback report, tell us roughly when you sent it and your device model, or the email address you gave with it.
18. Children's Privacy
Charge Control is a general-utility tool intended for a general audience — and, given that it requires a rooted device or a smart plug, for technically experienced users. It is not directed to children under the age of 13 (or the equivalent minimum age in your jurisdiction), and we do not knowingly collect personal information from children. If you believe a child has provided us with personal information, please contact us so we can take appropriate action.
19. Security
We take reasonable technical and organizational measures to protect information. App data on your device is held in the app's private, sandboxed storage; the helper module's configuration lives in a root-protected directory that ordinary apps cannot read. Communications with Firebase, Google Play, and Govee use industry-standard encryption in transit (TLS); the App permits unencrypted connections only to addresses on your local network, for smart plugs you set up. Device-support reports (§11) are write-only from the App and are not readable by any copy of the App or by the public, and the App attests itself to our database using Google's Play Integrity service so that reports can only come from a genuine, unmodified install. Feedback reports (§12) are likewise write-only from the App: no copy of the App, and no member of the public, can read them. Please note that a rooted device is inherently less protected than an unrooted one — any app you grant root access can read data across the system — so the overall security of your device also depends on which other apps you grant superuser rights.
No method of transmission or storage is completely secure, and we cannot guarantee absolute security.
20. International Data Transfers
The third-party services we use (Google, AppLovin, the ad networks listed in §13, and Govee if you use a Govee plug) may process data on servers located outside your country, including in the United States. Where required, these transfers rely on appropriate safeguards such as Standard Contractual Clauses.
21. Changes to This Policy
We may update this Privacy Policy from time to time to reflect changes in the app, the law, or our practices. When we make material changes, we will update the "Last updated" date at the top of this page and, where appropriate, provide notice within the app. Continued use of Charge Control after changes take effect constitutes acceptance of the revised policy.
22. Contact Us
If you have questions, concerns, or requests regarding this Privacy Policy or your personal information, contact us at:
SoftPlex Inc.
Halifax, Nova Scotia, Canada
Email: support@softplex.io