{"slug": "testing-offline-android-translators-with-adb-and-airplane-mode", "title": "Testing offline Android translators with adb and airplane mode", "summary": "A developer documented a repeatable adb-based method for verifying whether Android translation apps truly work offline, comparing Google Translate against InkPeek, an app that runs an AI model locally on the device. The test uses airplane mode, disabled Wi-Fi and data radios, and adb-captured evidence rather than screen observation, with a pass condition of readable output, preserved meaning, and no network-error banner. The writeup notes that offline capability only holds for language packs or models already downloaded to the phone.", "body_md": "Offline translation is one of those claims that's easy to make and annoying to verify. You tap a button, text appears, and you have no idea whether the phone quietly grabbed a mobile data connection behind your back. So I set up a small, repeatable test: same phone, same sentence, same target language, airplane mode on, and `adb` capturing the evidence as files instead of my memory of what I saw on screen.\n\nThe two contenders were Google Translate (installed from Google Play) and InkPeek, a translator that runs an AI model locally on the device. The whole run takes about 25 minutes and sits at intermediate level, mostly because you drive the phone from a PC.\n\nOne warning before we start: my source material doesn't state InkPeek's package name, minimum Android version, model size or price. Wherever those matter below I've marked them as things to confirm in the vendor's own documentation before you commit to anything.\n\nA fair comparison is mostly about removing variables:\n\n`The meeting is moved to Thursday at 9 a.m.`\n`adb`, not judged from the screen.\nThe pass condition: the translation is readable, the meaning holds, and the app shows no network error such as a \"connect to the internet\" banner.\n\nFor hardware I used a USB cable, a PC with Android Platform Tools, and a phone on Android 11 or newer (the `svc` commands below are friendlier there). Free storage matters too — a few hundred megabytes at minimum, since every language pack or on-device model lives on the phone.\n\nEnable `Settings → About phone → tap Build number 7 times`, then flip `Settings → System → Developer options → USB debugging` on. Plug in the cable, accept `Allow USB debugging?` and tick `Always allow from this computer`.\n\n```\nadb devices\nadb shell getprop ro.build.version.release\nadb shell getprop ro.product.model\nadb shell df -h /data\n```\n\nOn a working setup the first line comes back as a serial followed by the word `device` — not `unauthorized`, not `offline`. In my run the phone reported `Pixel 7` and `/data` showed `46G` available, plenty of headroom for several packs.\n\nIf you see `unauthorized`, nothing further in this guide will work. Unlock the phone, accept the prompt again, and re-run `adb devices` until the serial shows `device` twice in a row.\n\nThis is the step people skip, and it's the one that decides whether the test means anything. An offline translator is only offline for the languages it has already stored locally.\n\nFor Google Translate, nothing is installed by default. Open the app, tap the profile icon in the top right, go to **Offline translation**, pick a language and download it. Repeat for every language in your pair — an English↔Spanish test needs two packs, because each side of the pair is handled locally.\n\nFor InkPeek, install the build from its official distribution channel and let the app pull its own model through its on-screen flow. If you're sideloading instead:\n\n```\nadb install -r ~/apk/inkpeek/<your-build>.apk\n```\n\n`Success` is what you want. Anything else prints a reason code, for example `Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]`, which usually means the storage check above was optimistic.\n\nThen verify both packages exist (swap in the real vendor package name for InkPeek):\n\n```\nadb shell pm list packages | grep -i -E \"translate|inkpeek\"\npackage:com.google.android.apps.translate\npackage:<vendor.package.for.inkpeek>\n```\n\nI also recorded the Google Translate build so I knew exactly what I'd tested — `adb shell dumpsys package com.google.android.apps.translate | grep -m1 versionName` prints `versionName=<x.y.z>`. Don't compare that number to one from an article; check the current Play listing.\n\n```\nadb shell svc wifi disable\nadb shell svc data disable\nadb shell settings get global airplane_mode_on\n```\n\nThat last command returns `1` when airplane mode is on and `0` when it isn't. If you get `0`, pull down the quick settings shade and enable it before continuing. Leaving one radio alive is the single most common reason a \"failed\" offline test turns out to have been online the whole time.\n\nWith everything dark, translate the fixed sentence in both apps and capture each screen:\n\n```\nadb exec-out screencap -p > ~/offline-google.png\nadb exec-out screencap -p > ~/offline-inkpeek.png\n```\n\nWhen you're done, restore connectivity so you're not leaving the phone crippled:\n\n```\nadb shell svc wifi enable\nadb shell svc data enable\n```\n\nOpen both PNGs and check three things: the sentence is readable, the meaning matches the source, and no network-related error is anywhere on screen. Writing the verdict into a table keeps the decision honest:\n\n| App | Works offline | Prerequisite | Price | Confirm yourself | \n|---|---|---|---|---|\n| Google Translate | Yes, once packs are downloaded | One pack per language, in-app | Free — check the Play listing | Current listing, pack sizes | \n| InkPeek | Yes, with its on-device model installed | The app's own model files | Not stated in my source material | Package name, minimum Android version, model size, licence | \n\nThe rule I ended up with: if your everyday language pair already has a downloaded pack and you mostly need short, predictable sentences, Google Translate is the zero-cost default. If you specifically want on-device AI behaviour that the Google app doesn't expose, InkPeek is the one to keep — but only after its model has been downloaded once and the airplane-mode test passes cleanly.\n\n`adb devices` reports `device` for your serial`adb shell settings get global airplane_mode_on` prints `1`\nThe interesting part of this comparison isn't which app wins — it's that \"offline\" is a property of the installation, not of the app icon. Google Translate needs a pack per language and gives you nothing until you download them; InkPeek needs its model fetched once. After that, both are genuinely usable with the radios dead. The habit worth keeping is the setup: check the device with `adb devices`, download the local data first, flip airplane mode, save screenshots, and compare files instead of vibes.\n\nIf you want more write-ups like this one, it was originally published on AI Release — [https://ai-release.org](https://ai-release.org) — and the channel posts similar guides at [https://t.me/ai_release1](https://t.me/ai_release1).", "url": "https://wpnews.pro/news/testing-offline-android-translators-with-adb-and-airplane-mode", "canonical_source": "https://dev.to/qunirice_verase_1ab0caeba/testing-offline-android-translators-with-adb-and-airplane-mode-22ll", "published_at": "2026-11-13 10:05:25+00:00", "updated_at": "2026-11-13 10:21:41.748503+00:00", "lang": "en", "topics": ["ai-tools", "artificial-intelligence", "natural-language-processing"], "entities": ["Google Translate", "InkPeek", "Google", "Android", "adb"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/testing-offline-android-translators-with-adb-and-airplane-mode", "markdown": "https://wpnews.pro/news/testing-offline-android-translators-with-adb-and-airplane-mode.md", "text": "https://wpnews.pro/news/testing-offline-android-translators-with-adb-and-airplane-mode.txt", "jsonld": "https://wpnews.pro/news/testing-offline-android-translators-with-adb-and-airplane-mode.jsonld"}}