Skip to content

AbyssMoth/android-vpn-detector-core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

android-vpn-detector-core

Чистое Android-ядро для определения VPN и наличия интернета, без зависимостей от игрового движка. Только Android SDK. Одно ядро переиспользуется разными движками через тонкие обвязки: Godot (godot-vpn-detector, подключает это ядро как submodule) и, при необходимости, Unity (C#-мост поверх того же AAR).

Студийная библиотека Abyss Moth. Лицензия MIT.

Что внутри

com.abyssmoth.vpndetector.core.VpnDetectorCore - один класс:

VpnDetectorCore core = new VpnDetectorCore(context); // application context

core.startMonitoring(new VpnDetectorCore.Listener() {
    @Override public void onStatusChanged(boolean isVpn, boolean hasInternet) {
        // прокинуть в движок (сигнал Godot / событие Unity)
    }
});
core.stopMonitoring();

boolean vpn = core.isVpnActive();              // живая проверка
boolean net = core.hasInternetConnection();    // живая проверка
boolean cachedVpn = core.getCachedVpnStatus(); // последнее известное
boolean cachedNet = core.getCachedInternetStatus();

boolean opened = core.openVpnSettings(activity); // открыть системные настройки VPN

Как устроено определение

  • VPN: обход всех сетей, VPN активен если хотя бы у одной есть TRANSPORT_VPN.
  • Интернет: обход всех сетей, интернет есть если хотя бы у одной есть NET_CAPABILITY_INTERNET + NET_CAPABILITY_VALIDATED. Обход всех сетей важен: под VPN сама VPN-сеть часто не VALIDATED, а валидной остаётся подложка (Wi-Fi/LTE).
  • Изменения ловятся через ConnectivityManager.NetworkCallback (rising/falling edge), не поллингом.

Весь код в try/catch: на кастомных прошивках вернёт false и не уронит приложение.

Разрешения

AndroidManifest.xml добавляет ACCESS_NETWORK_STATE и INTERNET. Чувствительных разрешений не требуется. Отключить чужой VPN программно нельзя (ограничение Android) - openVpnSettings лишь открывает игроку системный экран.

Сборка

./gradlew :vpndetectorcore:assembleRelease
# AAR: vpndetectorcore/build/outputs/aar/vpndetectorcore-release.aar

Требования: Android SDK, JDK 17-22 (Gradle 8.14.x не поддерживает JDK 25), AGP 8.13.0, compileSdk 36, minSdk 23.

Использование в Godot

Не напрямую. Godot-обёртка godot-vpn-detector подключает это ядро как git submodule и делегирует в него из GodotPlugin. Для Unity аналогично пишется тонкий C#-мост поверх собранного AAR.

About

Чистое Android-ядро определения VPN и интернета (без зависимостей от движка). Переиспользуется обёртками Godot и Unity.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages