# BrosSpark Mobile — 0.3.10 alpha

Masaüstü APRS/DMR uygulamasının Android Studio için yerel Java/C++ aktarımıdır. Test edilen geliştirme sürümüdür;
canlı ağ ve gerçek telefon doğrulaması tamamlanmış üretim sürümü değildir.

## Görünüm ve açılış

Soğuk açılışta masaüstündeki orijinal TRAC Adana ve BrosSpark logoları sırasıyla 3,5 saniye görünür.
İkinci ekranda TA5AZG & TA5KTY imzası bulunur. “Uygulamayı aç” ile beklemeden geçilebilir.
Ekran dönüşü açılışı başa sarmaz; arka planda süre durur. Bildirimden sohbet açarken logolar bekletilmez.
Uygulama simgesi ve başlıklarda gerçek BrosSpark görseli kullanılır. Koyu zemin, turkuaz/mavi geçişler,
sinyal desenli ana kart, çizgi simgeleri, yenilenen mesaj kartları ve belirgin PTT alanı ortak görsel dili oluşturur.

## Bilgi rehberi

**Bilgi** sekmesi internet gerektirmeden 93 kart sunar: 26 Q kodu, 20 kısaltma (kısa dalga/HF dahil),
13 temel kavram, 26 harflik uluslararası fonetik alfabe ve 8 Türkiye kullanım kuralı özeti.
Arama Türkçe karakter yazılmadan da çalışır; örneğin `gorusme`, `kisa dalga` veya `QTH?`.
Kategori seçilebilir; karta dokunmak ayrıntı/örnek ve kaynak düğmesini açar. Arama, kategori ve okunan
konum sekme değişiminde korunur; ekran dönüşünde arama/kategori de korunur. Klavye açıldığında başlık ve
alt gezinme geçici küçülür; arama sonuçları görünür kalır.

Türkiye bölümündeki özetler 25 Ekim 2026 tarihinde BTK ve KEGM kaynaklarıyla kontrol edildi.
Belge sınıfı, frekans/güç/emisyon kısıtlamaları, muafiyet, röle/internet arayüzü, kripto,
afet haberleşmesinde kurum izni, suni yük ve tahsisli çağrı işareti konuları yer alır.
Güncel resmî metin esas alınır; rehber belge veya ilave yayın yetkisi vermez. Frekans/güç tablosu
sabitlenmedi; Kaynaklar düğmesi BTK’nın güncel teknik ölçütlerine ve KEGM’ye yönlendirir.
Uluslararası terim kaynakları Türkiye için mevzuat kaynağı olarak kullanılmaz. 73/88 Q kodu değildir;
CTCSS/DCS ses şifrelemesi veya gizlilik sağlamaz.

Kaynaklar yalnız açık dokunmayla tarayıcıda açılır. Rehber bağlantı, konum veya mikrofon başlatmaz.
Kaynak kapsamı ve inceleme notu: [BILGI_KAYNAKLARI_TR.md](BILGI_KAYNAKLARI_TR.md).

## Kullanım

Üstteki **⋯** menüsü APRS araçları, DMR, BrandMeister ve Dernekler merkezlerini açar.
Alt gezinmede Harita, İstasyon, Mesajlar, DMR, Bilgi ve Ayarlar bulunur. Kendi çağrı işareti/SSID'nizi kullanın.
Varsayılan APRS sunucusu `rotate.aprs2.net:14580`; `-1` passcode yalnızca dinlemedir. Gönderim yalnız doğrulanmış oturumda yapılır.
Türkçe harfler ASCII'ye çevrilir; mesaj sınırı 67 karakterdir. ACK bekleme/gönderim durumu teslim garantisi değildir.
En yeni APRS mesajları en fazla 500 kayıt ve 2 MB UTF-8 sınırı içinde cihazda saklanır; çok uzun gelen metinlerde eski kayıtlar bütçeye göre bırakılır. Saklanan mesajın metni kesilmez; bekleyen mesajlar bağlantı kopunca otomatik tekrar oynatılmaz.
ACK yalnız eşleşen gönderen ve güncel bekleyen ID için 60 saniye içinde kabul edilir. İlk onay/ret sonrasında
geç gelen yanıt durumu değiştirmez. Bekleme ve yanıt sınırı telefonun tarih/saat ayarından etkilenmez.
Yeniden açılışta tamamlanmamış gönderimler açıkça işaretlenir; teslim edilmiş varsayılmaz.
Mesajlar → Sohbet seç ile kişi sohbeti veya tüm mesaj günlüğü açılır; yeni sohbet de oluşturulabilir.
Okunmamış mesaj sayısı gezinmede ve sohbet seçiminde görünür. Yalnız öndeki, odaklanmış sohbet okunmuş sayılır;
başka kişilerin mesajları beklemeye devam eder. Her sohbetin taslağı ayrıdır ve ekran yenilenmesinde korunur.
Bildirim dokunulduğunda ilgili sohbeti açar; seçili sohbette alıcı sabitlenir.

APRS araçları: 10–86400 saniye Beacon, sembol seçimi, saatte en çok bir otomatik yanıt/istasyon,
ANSRVR'a 15 dakikalık Thursday mesajı, gerçek acil durum için onaylı SOS, QRZ, mesaj arama ve CSV.
“Etkinlik / çevrim mesajı” ekranı, Beacon açıklaması ile AA: QSL biçimindeki otomatik yanıtı birlikte hazırlar ve hedef sohbeti açar.
Önizleme gerçek üretilen yanıtı ve 67 karakter sınırını gösterir. Uygulamak bağlantı veya anlık yayın başlatmaz.
Beacon zaten açıksa açıklama sonraki gönderimde kullanılır; otomatik yanıt doğrulanmış bağlantıda, mevcut saatlik sınırla çalışır.
“Önceki açıklama ve yanıtı geri getir” önceki üç ayarı geri yükler; Beacon açma/kapama ayrı yönetilir. SOS açıkken etkinlik ayarı değiştirilemez.
Bağlantı kapanınca Beacon/Thursday/SOS durur. Android pil yönetimi zamanlayıcıları geciktirebilir; Android 15+ APRS arka plan süresini sınırlar.
“Konum gönder” bir defalık yayın isteğidir. Kayıtlı konum varsa “Telefon konumunu al ve gönder” veya koordinatları gösterilen “Kayıtlı istasyon konumu” seçilir. Kayıt yoksa telefon konumu alınır. Bağlantı kapalıysa kurulur; yalnız dinleme oturumunda kendi APRS-IS passcode bilginiz istenir. -1 konum yayımlayamaz. Doğrulanmış bağlantı sonrasında konum izni istenir ve tek paket gönderilir. Yaklaşık konum izni de desteklenir; Android’in sağladığı doğruluk kullanılır. Manuel istasyon konumu için GPS izni gerekmez.
“Konum al” tek başına yayın yapmaz. Telefon konumu en fazla 30 saniyelik geçerli önbellekten veya yeni ölçümden gelir; 45 saniyede alınamazsa açıklama gösterilir. Konum durumu satırından iptal edilebilir. Ekrandan çıkma, arka plan veya bağlantı kaybı gönderim bekleyişini iptal eder; geri dönmek otomatik tekrar başlatmaz. Tek gönderim otomatik izleme/Beacon başlatmaz; APRS harita bağlantısı açık kalır. “Bağlantıya yazıldı” TCP yazımını belirtir, aprs.fi veya diğer istasyonlara teslim garantisi değildir.
APRS’ye bir kez başarılı giriş yaptıktan sonra uygulamayı kapatıp açtığınızda girişiniz hatırlanır. Ayarlardaki passcode alanını boş bırakmak kayıtlı girişi kullanır; parola ekranda yeniden gösterilmez. Ayarlar → “Kaydedilmiş APRS girişini sil” ile giriş kaldırılabilir. Çağrı işareti/SSID değiştirilirse veya -1 kaydedilirse önceki giriş silinir. Android uygulama verileri silinir ya da uygulama kaldırılırsa yeniden giriş gerekir. Sunucu kayıtlı bilgiyi reddederse doğru passcode tekrar istenir. Arka plan GPS takibi yoktur. Harita izleme, kayıtlı konuma odaklanır.
Uzun basarak konum seçme, harita PNG, görünüm saklama ve radar merkezini kendi konumuna alma bulunur.
Harita araçlarında OpenStreetMap/CARTO kaynağı, otomatik yedek ve bağlantı durumu seçilir. CARTO için kendi basemap anahtarınız gerekir;
anahtar yalnız ekran oturumunda bellekte tutulur, WebView adresine veya ayarlara yazılmaz. Anahtar yoksa OSM kullanılır.
Otomatik mod, üç farklı OSM karo hatasından sonra anahtar varsa bir kez CARTO’ya geçer.
“İnternetten yaklaşık konum” ipwho.is, yedek olarak ipapi.co kullanır. VPN/mobil ağ farklı şehir gösterebilir.
Sonuç önce önizlenir; kullanıcı “İstasyon konumu yap” demeden kayıtlı koordinat değişmez. GPS yerine kesin konum sayılmaz.
Beacon açıksa uygulanan konum sonraki yayında kullanılır; yaklaşık konum sorgusu tek başına APRS paketi göndermez.
Varsayılan radar merkezi 39°N/35°E, yarıçap 250 km'dir; bu, kendi konumunuz olarak yayımlanmaz.

DMR: Terminal/Rewind UDP 54006 veya Homebrew UDP 62031. Kişisel DMR ID ve Hotspot Security şifresi gerekir.
Protokol seçimi varsayılan portu değiştirir; daha sonra elle özel port yazılabilir. Terminal’de cihaz kimliği kişisel ID’dir;
Homebrew cihaz/slot/color alanları kapanır. Homebrew’e dönünce önceki cihaz taslağı geri gelir.
Kayıtlı master listesi özel önbellekten, yoksa paketli listeden açılır. “Master listesini internetten yenile”
[Pi-Star’ın yayımladığı listeyi](https://www.pistar.uk/downloads/DMR_Hosts.txt) HTTPS ile alır. Sadece BM satırlarının adı/adresi/portu aktarılır; parola sütunu kullanılmaz.
Bozuk veya başarısız yenileme önceki geçerli listeyi bozmaz. Terminal seçiminde 54006, Homebrew seçiminde master’ın listelenen portu kullanılır.
Adres boşsa yerel listeden masaüstündeki tercih sırasıyla hazırlanır; kendi başına indirme veya bağlantı başlamaz.
Bağlantı alanlarının parolasız taslağı sayfadan çıkarken saklanır. Ekran dönüşünde özel port ve diğer alanlar korunur;
Hotspot parolası tekrar girilir. Ayar düzenlemek bağlantı veya mikrofon kaydı başlatmaz.
Master'ın hesabınıza/protokole izin vermesi sunucuya bağlıdır. Şifreli çağrı çözme desteği yoktur.
PTT yalnız basılı tutulurken kayıt açar. İzin onayından sonra yeniden basılmalıdır; kendi başına kayıt başlamaz.
PTT bırakma, düğmenin dışına çıkma, çoklu dokunma, odak kaybı, başka ekran ve arka plana geçiş mikrofonu kapatır.
Klavye odağı düğmedeyken Boşluk, Enter veya DPAD orta tuşu basılı tutulabilir; tekrar tuş olayları kaydı yeniden başlatmaz.
Erişilebilirlik tek tıklaması mikrofonu açık bırakmaz; basılı tutma açıklaması okunur. VOX yoktur; PTT sınırı 180 saniyedir.
Ses başka uygulamaya geçtiğinde veya kulaklık/ilgili aygıt ayrıldığında PTT bırakılır. Geçici ses odağı dönüşü yalnız dinlemeyi sürdürebilir;
mikrofon için yeniden basmak gerekir. “Sesi yeniden etkinleştir” yalnız ses odağını geri ister, PTT veya kayıt başlatmaz.
[Android ses odağı rehberi](https://developer.android.com/media/optimize/audio-focus) esas alındı; kayıp/duck sırasında konuşma sesi duraklatılır ve kapanışta odak bırakılır.
Mikrofon/hoparlör aygıtları, yerel basılı test, 2000 görüşmelik kimlik/zaman/süre günlüğü ve CSV bulunur; ses kaydı tutulmaz.
Görüşme sırasında alınan çağrı/isim ve hedef ekranda gösterilir. Geçmiş çağrı, isim, ID, hedef veya tarihle aranabilir;
CSV arama sonuçlarının tamamını içerir. Uzun geçmiş 100'er kayıtla açılır.
Yüklemede yalnız RX/TX görüşmeleri ve son 2000 satır alınır; yinelenen kayıt kimlikleri atlanır.
Bozuk radyo kimliği özel çağrı hedefi yapılamaz. Bilinmeyen süre ekranda belirtilir, CSV’de boş kalır.
CSV Türkçe yön/çağrı türü açıklaması, UTF-8 işareti ve tablo formülü koruması içerir.
Derneğe DMR kaydından katılımcı seçerken yalnız bilinen gelen çağrılar hazırlanır; bilinmeyen isteğe bağlı DMR ID boş kalır.
Bu seçim çevrime kendi başına katılım kaydetmez veya radyo bağlantısı açmaz.
Yerel test için DMR bağlantısını kapatıp kulaklık kullanın; test sesi ağa gönderilmez.
Yerel mikrofon testi hazırlanırken ekran kullanılabilir; bırakma veya başka sayfaya geçiş bekleyen hazırlığı iptal eder.
Hazırlanıyor/açık/durduruldu durumu ve seviye gösterilir. Geç dönen eski aygıt, hata veya odak bildirimi yeni basışa karışmaz.
Seçilmiş mikrofon artık bağlı değilse uygulama başka mikrofona sessizce geçmek yerine yeniden seçim ister.

“Bağlantı raporu” son bağlantının protokol, sunucu/port, çağrı/ID/hedef, aşama/hata kodu ve ses alma sayaçlarını gösterir.
Terminal ve Homebrew giriş aşamaları ayrı izlenir; hata oluşursa kesilmeden önceki gerçek aşama korunur.
Ses paketi sayısı kabul edilen ses bloklarını, özel çağrı yanıtı sayısı başarılı kontrol yanıtlarını gösterir.
Son rapor uygulamanın özel dosyasında kalır; uygulama yeniden açılınca geçmiş kanıt yüklenir, bağlantı veya mikrofon açılmaz.
Yeni bağlantı ayrı kimlik ve sıfır sayaçlarla başlar. Panoya kopyalanabilir veya JSON olarak Android dosya seçicisine gönderilebilir.
Ekrana açıldığı andaki görünüm kopyalanır; yenilemek için görüşmeye dönüp raporu yeniden açın.
Raporda parola, doğrulama özeti, ses örneği ve serbest ağ bildirimi bulunmaz. “DMR bildirimleri” ayrı okunabilir.
Geçersiz dosya/alanlar rapora aktarılmaz; dosya tek başına ağ bağlantısı başlatmaz.

BrandMeister: kimlik/TG dizini, kendi cihazında API v2 anahtarıyla statik TG ekleme/kaldırma, dinamik TG ve QSO rotası bırakma.
Genel dizin sorguları yönetim anahtarını taşımaz; yönetim anahtarı yalnız açık form ve ilgili istek belleğindedir.
Yönetim düğmesine art arda basmak aynı bekleyen isteği tekrarlamaz; başarısız işlem otomatik yeniden gönderilmez.
Sonuç, işlemin yapıldığı cihaz/slot/TG ile gösterilir. Başka sayfaya geçince eski yanıt o sayfaya karışmaz.
API anahtarı oluşturma ve cihaz işlemleri [BrandMeister resmî API Manager belgesinde](https://help.brandmeister.network/hotspots/api-manager/) açıklanır.
DMR görüşme kimliği önce RadioID, sonuç yoksa BrandMeister genel dizininden alınır. Bilinen isim/çağrı 7 gün,
bulunamayan kayıt 10 dakika önbellektedir; geçici bağlantı hatası eski kimlik bilgisini silmez. Servis kapanınca geç cevap uygulanmaz.
Bozuk tek önbellek satırı diğer kimlikleri engellemez. Gelecek tarihli kayıt eski bilgi olarak gösterilir ve yeniden sorgulanır.
Yarım kalan yazmada kimlik ve görüşme günlüğünün Android AtomicFile yedeği geri alınır; dosya kendi başına ağ bağlantısı başlatmaz.
QRZ için araçlardan kullanıcı adı/parola ile bir kez giriş yapın; otomatik sorgu açıkken seçili sohbette kişi bilgisi görünür.
Sohbet/istasyon/harita üzerindeki QRZ eylemi hedef çağrıyı taşır. Parola ve oturum anahtarı yalnız uygulama belleğindedir;
uygulama işlemi kapanırsa yeniden giriş gerekir. Oturumu kapat tüm kişi önbelleğini temizler.
Başarılı sorgular 10 dakika, bulunamayan çağrı 30 saniye önbellekte tutulur. Tam adres/e-posta sorgu ekranında gösterilmez.
XML parser DTD ve harici varlıkları reddeder; abonelik uyarısı ekranda görünür.
[QRZ resmî XML sözleşmesine](https://www.qrz.com/docs/xml/current_spec.html) göre anahtar sonraki sorgularda yeniden kullanılır;
anahtar kaybolunca en fazla bir yeniden giriş denenir, Connection refused durumunda yeniden giriş otomatik tekrarlanmaz.
Gerçek hesap/abonelik yetkisi ayrıca gereklidir; testlerde yalnız yapay XML cevapları kullanıldı.

Dernekler: geçerli YM çağrı işareti tek başına yetki vermez; mevcut HTTPS dernek sunucusunda sahip parolası veya tek kullanımlık operatör kodu gerekir.
İlk kayıt, profil/logo/parola, süreli yetki oluşturma/iptal, audit, APRS/DMR çevrimleri, katılımcı CRUD, kapatma/yeniden açma,
locator merkezleri/QTH haritası ve APRS/DMR kayıtlarından katılım adayı seçme aktarıldı. Katılım kullanıcı onayıyla yazılır.
Sunucu her işlemde yetkiyi ve revision çakışmalarını doğrular. QTH metninden kesin konum uydurulmaz.
1080×1350 poster, 16'şar kişilik liste sayfaları, QTH koordinat görseli, kişisel sertifika/QSL ve CSV/JSON manifest ZIP telefonda üretilir.
Büyük ZIP'ler tamamen RAM'e alınmaz. Android sistem kaydetme penceresi hedef klasörü seçtirir;
ekran döndüğünde bekleyen dosya korunur. Başlayan kopyalama ekran yenilenmesinde tamamlanır.
İptal ve hedef dosya hatasında geçici dosya temizlenir; hata olursa çıktı yeniden oluşturulabilir. Belge numarası etkinlik ID + çağrı işaretinden türetilir; SHA256 bütünlük kontrolüdür, dijital imza değildir.
Uzun liste alanları kısaltılabilir; CSV tam değerleri içerir. Paylaşım QTH görseli koordinat dağılımı, uygulama QTH ekranı gerçek OSM haritasıdır.

## Veri ve izinler

APRS passcode’u yalnız başarılı bağlantı doğrulamasından sonra cihazda şifreli saklanır. Şifreleme anahtarı Android Keystore’da tutulur; şifreli kayıt uygulamanın yedeklenmeyen özel alanındadır. Giriş yükleme/kaydetme arayüzü bekletmeden çalışır. Passcode düz metin ayarlara, ekran durumuna veya dağıtım dosyalarına konmaz. Hotspot/QRZ parolaları ile BrandMeister/dernek oturumlarının önceki bellek politikası sürer.
Parola alanları ekran durumuna kaydedilmez; işlem/sayfa yeniden oluşturulduğunda tekrar girilmesi gerekebilir.
Geçmiş uygulamanın özel alanındadır; bulut yedekleme/cihaz aktarımı kapalıdır. Klasik APRS TCP ve DMR UDP şifreli değildir.
Diğer API'ler HTTPS kullanır; yönlendirmelerde bearer başka adrese aktarılmaz. Konum/mikrofon izinleri ilgili işlemde istenir.

## Derleme / test

ZIP'teki `BrosSparkMobile` klasörünü Android Studio → Open ile açın. JDK 17+, SDK Platform 37.0, Build Tools 36.0.0,
Gradle 9.6.0 / AGP 9.4.1 kullanılır. Makineye özel `local.properties` arşivde yoktur; Android Studio SDK yolunu oluşturur.

```powershell
.\gradlew.bat assembleDebug lintDebug
.\test-protocol.ps1
.\test-dmr.ps1
.\gradlew.bat assembleDebugAndroidTest
.\test-android.ps1 -Suite all -PythonPath C:\Python\python.exe
.\test-android.ps1 -Suite ui -SmallScreen
.\test-login-restart.ps1
.\build-native.ps1 -NdkPath C:\Android\android-ndk-r28c
```

Dağıtım için `python package-mobile.py`, ardından `python verify-package.py` çalıştırılabilir.
Doğrulayıcı APK/kaynak CRC-SHA256, kaynak dosyaların birebirliği, üç codec mimarisi ve bilinen test/özel dosya dışlamalarını denetler.
`--previous önceki.apk` native byte karşılaştırmasını ekler. Masaüstü `work/src` varsa orijinal logolar da karşılaştırılır;
başka konum için `--desktop-source klasör` kullanılabilir. Denetim genel bir sır taramasının veya gerçek telefon testinin yerini almaz.

JVM testleri için JAVA_HOME gerekir. Standart Gradle derlemesi `jniLibs` içindeki ARM64/ARMv7/x86-64 kütüphanelerini paketler;
C/C++ değişikliğinden sonra native script ayrıca çalıştırılır. Tam kaynak, lisans ve kredi dosyaları cpp/assets altındadır.

73 APRS, 188 DMR/dernek JVM ve 867 Android kontrolü geçti: toplam 1128. Tekrarlanan koşular toplama yeniden eklenmez.
Android kontrolleri codec/çıktı/QRZ/ekran açılışı (61), gerçek yerel HTTPS dernek yetki/çakışma/oturum akışları (36),
APRS servis otomasyonları/okunmamış/etkinlik (53), oturum/zaman/geçmiş sınırları (48), telefon konumu/tek gönderim/izin/bağlantı (45), kalıcı giriş/şifreli kayıt (32), ayrı süreç yeniden açılış (6), DMR Android servisi/ses alma/geçmiş arama (35), WebView harita (27), sohbet/kişi başına taslak/sayaç (16), IP/native karo taşıma (29) açılış/logo yaşam döngüsü (13) otomatik QRZ (36), gerçek Android dosya kaydetme (36), BrandMeister/kimlik yedeği (69), master/protokol/ayar (41), ses odağı/PTT (54), bozuk önbellek/kurtarma/boyut sınırı (36), geçmiş/CSV/dernek aday (50), bağlantı raporu (55), yerel ses/iptal yaşam döngüsü (27) ve küçük ekran/klavye/etkinlik akışı (27) gruplarıdır.
Android belge seçicisinden gerçek Downloads dosyası kaydedildi; UTF-8/PNG SHA256 ve 20 MiB ZIP CRC/özetleri eşleşti.
Seçici açıkken gerçek ekran döndürme, Activity yeniden oluşturma, kopyalama sırasında kapanma, iptal ve hatalı hedef sınandı.
Bulut dosya sağlayıcıları ve kopyalamanın ortasında sistemin uygulama işlemini öldürmesi doğrulanmadı.
12/12 codec karesi masaüstüyle byte düzeyinde aynı; 33 kişi üç sayfaya bölündü; sertifika özetleri doğrulandı.
Lint: 0 hata, 5 uyarı. Kalanlar istenen açılış, iki paketli harita JavaScript bildirimi, Gradle sürümü ve tek renk tema simgesidir; bastırılmadı. Python gereksinimleri ve yerel test ayrıntıları testing/README_TR.md içindedir.
Gerçek telefon/GPS/mikrofon/Bluetooth, canlı master/account/PTT/APRS/SOS/QRZ ve gerçek dernek hizmetinin işletim koşulları henüz doğrulanmış sayılmaz.
Genel APRS/DMR ağına test yayını yapılmadı. Kapsam ve test boşlukları PORT_STATUS.md'de izlenir.

Harita: paketlenmiş Leaflet 1.9.4 + HTTPS OSM/CARTO karoları, görünür atıf; toplu/çevrimdışı indirme yok.
OSM WebView HTTP önbelleğini kullanır. CARTO yerel HTTPS taşıması anahtarı sayfa URL’sinden ayırır; API yanıt önbelleği kapalıdır.
CARTO anahtar ve kullanım koşulları [resmî basemap sayfasında](https://carto.com/basemaps/), gerekli görünür kredi [atıf sayfasındadır](https://carto.com/attribution/).
Yaklaşık konum yanıt sözleşmeleri: [ipwho.is](https://ipwhois.io/documentation), [ipapi.co](https://ipapi.co/api/).
JavaScript/Android köprüsü yoktur. Leaflet/OpenDMR/DMRUtils3 kendi lisanslarını korur; lisans/kaynaklar pakete dahildir.
Harita hataları yeniden deneme düğmesiyle gösterilir; bağlantı kesilince alınmış istasyon işaretleri korunur.

## 0.3.9 değişiklikleri

Başarılı APRS girişleri artık cihazda hatırlanır. Yalnız sunucu doğrulamasından sonra call/SSID’ye bağlı passcode Android Keystore AES-256-GCM anahtarıyla şifrelenip özel NoBackup AtomicFile kaydına yazılır; düz metin ayar/Bundle veya dağıtım paketine alınmaz. Şifreleme ve dosya işlemleri ayrı çalışanda yapılır. Uygulama yeniden açıldığında kayıt yüklenir; boş bırakılan passcode alanı mevcut girişi korur. “Kaydedilmiş APRS girişini sil” bağlantıyı kapatıp dosya/anahtar ve RAM oturumunu kaldırır. Çağrı işareti/SSID değişimi, açıkça -1 seçimi veya kaydedilmiş passcode’un reddedilmesi yeniden giriş gerektirir. Bozuk kayıt/anahtar kaybında düz metin yedeğine geçilmez. 32 gerçek Keystore/native/yerel TCP kontrolü ve ayrı süreçte force-stop sonrası 6 yeniden açılış kontrolü geçti. Diğer hesapların parola politikası değişmedi.

## 0.3.8 değişiklikleri

Konum gönderimi artık tek istekte bağlantı doğrulama → telefon konumu → bir APRS paketi akışıyla çalışır. Kayıtlı istasyon konumu ayrıca seçilebilir; GPS izni gerekmez. Kayıtlı koordinat yoksa önce ayrı “Konum al” zorunluluğu kaldırıldı. Yalnız dinleme (-1) oturumunda açık passcode ekranı gösterilir; doğrulanmadan konum yayımlanmaz. Kabul edilmiş passcode ekran dönüşünde yalnız RAM’de korunur; Bundle/diske yazılmaz. Güncel telefon konumu için izin verilen sağlayıcılar ayrı ayrı denenir; bir sağlayıcı hatası diğerini kesmez. En fazla 30 saniyelik geçerli önbellek veya yeni konum kullanılır; 45 saniye süre sınırı, eski/geçersiz konum filtresi ve eski callback engeli vardır. İptal, ekran değişimi, arka plan ve bağlantı kaybı bekleyen gönderimi durdurur. Durum satırı kuyruk ile gerçek TCP yazımını ayırır; ağ teslim garantisi vermez. 45 yeni Android konum kontrolü; gerçek yaklaşık konum izin penceresi, yapay konum ve yerel TCP ile doğrulandı. Ayarlardaki sürüm etiketi gerçek paket sürümünü gösterir.

## 0.3.7 değişiklikleri

- Uzun gelen APRS mesajlarının geçmiş dosyasını okuyucunun 2 MB sınırından büyük yapabildiği regresyon testiyle doğrulandı ve düzeltildi. Yazıcı, en yeni en fazla 500 satırı tam JSON/UTF-8 byte bütçesi içinde saklar. Bütçeye sığmayan eski satırlar bırakılır; saklanan satırın metni veya okunmamış durumu kesilmez. Tek başına aşırı büyük bozuk satır diğer geçerli kayıtları düşürmez. Büyük çok baytlı snapshot, gerçek servis okuyucusunda yeniden açıldı; 500 satır ve boş geçmiş sınırları da geçti. Sekiz ek native kontrol; APRS grubu48, Android all722. Testte dosya geri yükleme artık servisin onDestroy son yazısı ve Activity kapanışı tamamlandıktan sonra yapılır.

## 0.3.6 değişiklikleri

- APRS ACK/rej yalnız güncel oturumun, eşleşen gönderen/ID ve 60 saniye içindeki bekleyen mesajını çözer. İlk ACK veya ret terminaldir; geç/yanlış gönderen/yeniden bağlanma yanıtı durumu değiştirmez. Bekleme, otomatik yanıt, 10 dakikalık tekrar engeli ve iki saatlik istasyon ömrü geçen süreyle izlenir; duvar saati yalnız gösterim içindir. Tekrar paketleri ilk kabulden başlayan pencereyi uzatmaz. Kendi çağrı konumu/polar enlemler haritaya eklenmez, son 1.000 istasyon tutulur. Mesaj geçmişi AtomicFile yedeğinden açılır; bozuk/scalar satır sonraki geçerli kaydı düşürmez. Uygulama yeniden açıldığında eski ACK bekleyeni “Gönderim tamamlanmadı” olur; otomatik tekrar gönderilmez. 26 yeni JVM ve 40 native Android kontrolü; yalnız yerel sunucu, yapay geçen süre, üç dosya kuşağını birebir geri yükleme.

## 0.3.5 değişiklikleri

- Durum, QRZ, DMR, dernek ve dosya bildirimlerinin metin/biçimleri Android kaynaklarına alındı.
- Başında/sonunda boşluk olan mesaj taslağının sayacı ekran dönüşünde de gönderilecek uzunluğu gösterir; iki native kontrol eklendi.
- Simge çizimindeki tekrar eden şekil oluşturma kaldırıldı; marka görselleri korundu. Eski Android için yedekleme kapatma ayarı açıklandı.
- Uyarılar 42’den 5’e düştü; uyarı bastırma veya bağımlılık yükseltmesi yapılmadı.

## 0.3.4 değişiklikleri

- Yerel ses testi aygıt hazırlığını ve kapatmayı ayrı çalışan üzerinde yapar; hazırlık boyunca ekran beklemez.
- Basılı tutma isteği her aşamada denetlenir. İptal edilen hazırlıktan ses karesi aktarılmaz; geç hazır/hata/odak dönüşü eski kaydı canlandıramaz.
- PTT bırakma yavaş aygıt hazırlığının kilidini beklemez. Eski hazırlık veya gönderim bitişi yeni basışı iptal edemez.
- Seviye/durum göstergesi yerel mikrofonu da izler. Seçili aygıt yoksa varsayılan mikrofona sessizce geçilmez.
- Sürücü hazırlık/başlatma/okuma hatası ve kaynak kapatma yarışları yapay aygıtlarla sınandı; gerçek mikrofon ve fiziksel USB/Bluetooth gecikmesi doğrulanmadı.
- 53 ek JVM ve 27 native Android kontrolü eklendi; tüm Android/küçük ekran grupları son kaynakla geçti.

## 0.3.3 değişiklikleri

- DMR bağlantı aşaması, hata kodu, alınan ses blokları/kareleri ve özel çağrı kontrol yanıtları için tipli rapor eklendi.
- Hata oluşan aşama ve son sayaçlar bağlantı kapanınca korunur; yeni bağlantıda sıfırlanır.
- Rapor özel AtomicFile dosyasına yazılır; yeniden yükleme geçmiş bilgiyi gösterir, mikrofon veya bağlantı başlatmaz.
- Native rapor görünümü, panoya kopyalama, JSON kaydetme ve ayrı ağ bildirimleri tamamlandı. Servis hazır değilken hata metni JSON diye kaydedilemez.
- Rapor yalnız tanımlı alanları içerir; parola, doğrulama verisi, ses veya serbest ağ metni aktarılmaz.
- Doğal bağlantı kapanışında ekranda eski bağlı durumun kalması düzeltildi.
- 55 Android rapor ve 4 JVM aşama/sayaç kontrolü eklendi; tüm Android ve küçük ekran grupları son kaynakla geçti.

## 0.3.2 değişiklikleri

- Görüşme geçmişi masaüstündeki CallLog alanlarına göre normalize edilir: tam RX/TX yönü, kayıt kimliği, sınırlı metin, geçerli radyo ID, üç durumlu çağrı türü ve süre.
- Yinelenen kayıtlar atlanır; bozuk satır sonraki geçerli kaydı engellemez. İlgisiz anahtar/ses alanları tutulmaz.
- Süre saniyenin onda birine yuvarlanır, bir günle sınırlıdır. Bozuk veya bilinmeyen süre sıfır diye gösterilmez.
- CSV bütün arama sonuçlarını kapsar; Türkçe Gelen/Giden ve Özel/Grup/Bilinmiyor açıklamaları ile boş bilinmeyen süreyi korur.
- Dernek adayları aynı çağrıyı en yeni gelen kayıtla birleştirir; bilinmeyen isteğe bağlı kimlik alanına 0 yazılmaz.
- 50 ek Android kontrolü: gerçek servis başlangıcı, 205 satır arama/sayfalama/CSV ve gerçek dernek aday/form akışı; ağ/mikrofon açılmaz.

## 0.3.1 değişiklikleri

- DMR kimlik önbelleğinde bozuk anahtar/satır veya yanlış gömülü ID diğer geçerli kayıtları kaybettirmez.
- Zaman damgası bozuk/gelecekteyse kimlik korunur, yeniden sorgulanır; saat geri alınması cache’i süresiz geçerli yapmaz.
- En yeni 10.000 kimlik, en çok 2 MB UTF-8 dosya sınırıyla tutulur; yalnız çağrı/isim/ID/tarih yüklenir. İlgisiz alanlar aktarılmaz.
- Kimlik ve çağrı geçmişi yarım kalan yazmanın AtomicFile yedeğinden okunabilir; geçmişteki bozuk satır atlanır.
- 36 yeni Android kontrolü; gerçek servis başlangıcı, yapay sorgu ve dosya kurtarma/geri yükleme dahil.

## 0.3.0 değişiklikleri

- Android ses odağı ve kulaklık/aygıt ayrılma sinyalleri PTT/mikrofon yaşam döngüsüne bağlandı; geç callback kapalı sesi açamaz.
- Basılı PTT; parmak sınır dışı, çoklu dokunma, iptal, klavye ve erişilebilirlik olaylarında güvenli bırakma davranışı kazandı.
- Odak geri gelince mikrofon otomatik açılmaz; dinleme için ayrı yeniden etkinleştirme düğmesi bulunur.
- Ses hazırlığı sırasında odak kaybı bağlantıyı düşürmez; yavaş hazırlıkta bırakılan PTT yayın başlığı göndermez.
- 54 Android ses/PTT + 9 JVM regresyon kontrolü eklendi; iki protokolde gerçek AudioManager odağı edinimi ayrıca sınandı.
- Kontroller yapay ses/girdilerle yapıldı; gerçek mikrofon ve fiziksel kulaklık/telefon doğrulaması tamamlanmış sayılmaz.

## 0.2.9 değişiklikleri

- Master listesini internetten yenileme, doğrulanmış özel cache ve paketli yedek tamamlandı; listeden parola alınmaz.
- Terminal/Homebrew değişiminde port ve kullanılabilir alanlar masaüstüyle eşitlendi; master’ın Homebrew özel portu korunur.
- Terminal kişisel ID kullanır; Homebrew cihaz taslağı ayrı tutulur. Bozuk, kullanılmayan Homebrew taslağı Terminal bağlantısını engellemez.
- Bağlantı formu parolasız alanlarını ekran dönüşü/sayfa geçişinde korur. 41 yeni yerel/Android kontrolü geçti.

## 0.2.8 değişiklikleri

- BrandMeister API v2 işlemlerinin yol/yöntem/gövde ve anahtar ayrımı masaüstüyle karşılaştırıldı; yerel yanıtlarla sınandı.
- Çift dokunuş, eski kuyruk, arka plan ve sayfa değişiminde geç yanıtlar düzeltildi. Hata mesajları anahtarı göstermez.
- RadioID → BrandMeister kimlik yedeği, kısa bilinmeyen önbelleği ve servis kapanış koruması tamamlandı.
- Kendi DMR ID araması eski çağrı işareti veya kapanmış ayar alanını değiştirmez.
- 69 ek kontrol; yeni durum metinleri Android kaynaklarına alındı, Lint uyarısı 52’den 47’ye düştü.

## 0.2.7 değişiklikleri

- Dosya kaydetme bekleyen kaynağı ekran oluşturulurken geri yükler; başlamış kopya ekran yenilenince kesilmez.
- İptal/eksik URI/hatalı hedef temizliği ve çakışan çıktı koruması eklendi. Harita sağlayıcı/izin hataları güvenli şekilde bildirilir.
- Gerçek Android seçicisiyle PNG, UTF-8 CSV/metin ve 20 MiB ZIP kaydedildi; özetler/CRC eşleşti, gerçek ekran döndürme geçti.
- 36 ek belge akışı kontrolü tüm Android servisleriyle birlikte sınandı.

## 0.2.6 değişiklikleri

- Ortak QRZ oturumu, seçili sohbette otomatik kişi bilgisi, aç/kapat ve güvenli oturum kapatma eklendi.
- Parola/token kalıcı ayarlara yazılmaz; HTTPS POST kullanılır. Opak oturum anahtarları doğru kodlanır.
- Hesap/sohbet/sayfa değişiminde eski yanıt gösterilmez. Harita/istasyon/sohbet giriş rotaları düzeltildi.
- QRZ anahtar yenileme, önbellek, XML kapsamı ve gerçek Android ekran akışı 36 ek kontrolle doğrulandı.

## 0.2.5 değişiklikleri

- Masaüstündeki etkinlik/çevrim mesajı hazırlığı aktarıldı: hedef sohbeti, Beacon açıklaması ve belirgin AA: otomatik yanıt birlikte hazırlanır.
- Geçersiz/uzun metin ayarları kısmen değiştirmez; etkinlik öncesi açıklama/yanıt/otomatik yanıt durumu geri getirilebilir.
- Sadece ayar uygulamak yayın başlatmaz; gerçek Android loopback Beacon/yanıt akışı ve küçük ekran sohbet geçişi doğrulandı.

## 0.2.4 değişiklikleri

- İki aşamalı orijinal TRAC/BrosSpark açılışı, imza, geçme düğmesi ve marka uygulama simgesi eklendi.
- Ana ekran, gezinme simgeleri, ortak form kartları, düğmeler, mesaj balonları ve DMR görünümü yenilendi.
- Küçük ekranda haritaya alan bırakıldı; harita araçları kompaktlaştırıldı, kaynak atfı okunur tutuldu.
- Mevcut ana ekrana gelen Harita/gezinme istekleri doğru sayfaya geçer; Android regresyon kontrolü eklendi.

## 0.2.3 değişiklikleri

- OSM/CARTO seçimi, üç farklı hatadan sonra otomatik yedek ve anahtarsız OSM davranışı eklendi.
- Kendi CARTO anahtarı native HTTPS içinde, Android paket/imza kimliğiyle kullanılır; WebView anahtarı almaz.
- Harita bağlantı durumunda mevcut kaynak, alınan/hatalı karo sayısı ve yedek geçişi görünür.
- IP yaklaşık konum ve yedek hizmet eklendi; önizleme/iptal/açık uygulama Android’de sentetik yanıtlarla doğrulandı.
- Gerçek konum servisine sorgu veya gerçek CARTO anahtarıyla istek test sırasında yapılmadı.

## 0.2.2 değişiklikleri

- Kişi bazlı APRS sohbetleri, tüm mesaj günlüğü, sohbet oluşturma ve kişi başına ayrı taslaklar eklendi.
- Okunmamış durumu geçmişle saklanır; görünür sohbet okunur, diğer konuşmaların sayaçları korunur.
- Gönderen başına bildirim ilgili sohbeti açar; ekrandaki sohbet için yinelenen bildirim gösterilmez.
- Sohbet ve taslaklar Android ekran yenilenmesinde ve bildirimden yeniden girişte doğrulandı.

## 0.2.1 değişiklikleri

- Android mesaj ACK ayrıştırmasında gerçek cihazda ortaya çıkan ICU uyumsuzluğu düzeltildi.
- Küçük ekranda klavye açıkken mesaj alanı ve geçmişe yer bırakıldı; taslak ekran yenilenmesinde korunur.
- Ekran/hizmet bağlanma ve WebView kapanışları düzeltildi. Harita PNG'si ekran görüntüsünden, arka planda dosyaya hazırlanır.
- Dernek girişinde eski oturum yanıtlarının yeni hesaba geçmesi engellendi; parola boşlukları korunur.
- DMR Homebrew paket sayacı, yeni oturum sayaç sıfırlaması, canlı arayan bilgisi ve geçmiş araması eklendi/düzeltildi.
- Hareketli istasyon bilgi kutusu yenilenir; harita yükleme hatası ve yeniden deneme durumu düzeltildi.

## 0.3.10 değişiklikleri

Bilgi sekmesi, 93 çevrimdışı kart ve Türkiye kaynaklı kurallar eklendi. 35 rehber kontrolü, tüm834 Android ve küçük ekran UI27 başarılı. Dar rehber35 tekrar sayılmaz; değişmeyen JVM73/188 ve ayrı süreç giriş6 önceki doğrulamadır. Lint0/5. Kaynak bağlantısı eşleştirmelerinin son düzenlemesi ayrıca rehber koşusuyla doğrulandı.
