Bu belge, mevcut Android uygulamasının (com.ziadoua.zcard) tüm temel özelliklerini, işlevlerini, veri modellerini ve platform entegrasyonlarını özetler. Bu analiz, uygulamanın Flutter ile yeniden yazılması sürecinde rehberlik etmesi amacıyla hazırlanmıştır.
Uygulama yerel verileri saklamak için bir SQLite veritabanı kullanmaktadır. Flutter geçişinde benzer bir ilişkisel yapı için sqflite veya alternatif olarak Isar / Hive kullanılabilir.
Her sadakat kartının bilgilerini tutan ana tablodur.
| Sütun Adı | Veri Tipi (SQLite) | Açıklama |
|---|---|---|
id |
INTEGER (PK, AI) | Kartın benzersiz kimliği |
store |
TEXT (Not Null) | Kartı veren mağaza / marka adı |
note |
TEXT (Not Null) | Kartla ilgili kullanıcı notu |
valid_from |
INTEGER | Geçerlilik başlangıç tarihi (Timestamp) |
expiry |
INTEGER | Son kullanma tarihi (Timestamp) |
balance |
TEXT (Default '0') | Kart bakiyesi veya puanı (Hassasiyet kaybını önlemek için metin olarak saklanır) |
balance_type |
TEXT | Bakiye türü (Para birimi simgesi veya puan tipi) |
header_color |
INTEGER | Kart başlığı için özel renk değeri (ARGB) |
card_id |
TEXT (Not Null) | Barkod içeriği veya kart numarası |
barcode_id |
TEXT | İkincil barkod veya kart kimliği |
barcode_type |
TEXT | Barkod formatı (Örn: QR_CODE, EAN_13) |
star_status |
INTEGER (Default 0) | Favori durumu (1: Favori, 0: Normal) |
last_used |
INTEGER (Default 0) | Kartın en son kullanıldığı zaman (Timestamp) |
zoom_level |
INTEGER (Default 100) | Kart görüntülenirken kullanılacak varsayılan parlaklık/yakınlaştırma yüzdesi |
archive_status |
INTEGER (Default 0) | Arşiv durumu (1: Arşivlenmiş, 0: Aktif) |
Kartları kategorize etmek için kullanılan gruplar.
id(TEXT, PK): Grup/Kategori adı (Benzersiz).order(INTEGER, Default 0): Grupların sıralama düzeni.
Kartlar ve gruplar arasındaki Çoktan-Çoka (Many-to-Many) ilişkiyi yönetir.
cardID(INTEGER): Kart ID'si.groupID(TEXT): Grup ID'si (Adı).- Primary Key:
(cardID, groupID)
Hızlı ve esnek metin araması için SQLite FTS4 sanal tablosu kullanılır. store ve note alanları üzerinde indeksleme yapar.
Uygulamanın başlangıç ekranıdır ve kullanıcının kartlarını listeler.
- Sekmeli Arayüz (Tabs): Kartlar, tanımlanan gruplara (kategorilere) göre sekmeler halinde filtrelenebilir.
- Arama Fonksiyonu: FTS veritabanı kullanılarak mağaza adı ve notlar arasında hızlı arama yapılır.
- Sıralama Seçenekleri:
- Sıralama Kriterleri: Alfabetik (
Alpha), Son Kullanılanlar (LastUsed), Son Kullanma Tarihi (Expiry). - Sıralama Yönü: Artan (Ascending), Azalan (Descending).
- Sıralama Kriterleri: Alfabetik (
- Çoklu Seçim Modu (Action Mode): Kartlara uzun basılarak birden fazla kart seçilebilir ve toplu işlemler yapılabilir:
- Toplu silme.
- Toplu arşivleme / arşivden çıkarma.
- Toplu grup ataması.
- Dışarıdan Paylaşım Alımı: Başka bir uygulamadan veya galeriden F-Card'a görsel paylaşıldığında otomatik olarak barkod analizi ve kart ekleme ekranı açılır (
Intent.ACTION_SENDentegrasyonu).
Seçilen kartın barkodunu ve detaylarını gösteren ekrandır.
- Yüksek Çözünürlüklü Barkod Çizimi: ZXing kütüphanesi entegrasyonu ile 13 farklı barkod türü desteklenir:
- Desteklenen Barkodlar: Aztec, Code 39, Code 93, Code 128, Codabar, Data Matrix, EAN 8, EAN 13, ITF, PDF 417, QR Code, UPC A, UPC E.
- Kart Fotoğrafları: Kartın ön (
front) ve arka (back) yüzünün fotoğrafları arasında geçiş yapılabilir. Resme tıklandığında tam ekran galeri görünümü açılır. - Ekran Parlaklığını Maksimize Etme: Barkodun fiziksel tarayıcılar tarafından kolay okunabilmesi için kart açıkken ekran parlaklığı otomatik olarak %100 yapılır (kullanıcı ayarına bağlı olarak).
- Ekranı Açık Tutma (Wakelock): Kart görüntülenirken ekranın kararması veya kapanması engellenir.
- Kilit Ekranı Üzerinde Gösterme: Kart kilit ekranı açıkken veya cihaz kilitliyken bile görüntülenebilir (ayarlardan aktifleştirildiyse hızlı erişim sağlar).
- Bakiye Güncelleme: Bakiye alanına dokunularak hızlıca puan veya bakiye güncelleme penceresi açılır.
- Kartlar Arası Geçiş: Alt kısımda yer alan sonraki/önceki butonları veya kaydırma hareketleri ile listedeki diğer kartlara hızlıca geçiş yapılabilir.
Kart oluşturma veya mevcut kart bilgilerini düzenleme ekranıdır.
- Görsel Ekleme & Kırpma:
- Kameradan kart resmi çekme veya galeriden yükleme (Ön yüz, Arka yüz ve Özel ikon).
- Yüklenen resimleri kırpma (
UCropentegrasyonu).
- Renk Algılama ve Seçimi:
- Kart görselinden/ikonundan otomatik tema rengi çıkarma.
- Renk paletinden veya özel renk seçiciden kart başlık rengi belirleme.
- Akıllı Tarih Seçiciler: Geçerlilik Başlangıcı ve Son Kullanma tarihleri için Material Date Picker entegrasyonu.
- Hata Önleme ve Doğrulama:
- Kart numarası veya barkod tipi değiştirildiğinde kullanıcıya uyarı gösterilir (tarayıcılarda okunmama riskine karşı).
- Kaydedilmemiş değişiklikler varken geri çıkılmaya çalışıldığında onay iletişim kutusu gösterilir.
Kamera ile fiziksel kart barkodunu tarama işlevidir.
- Kameradan Tarama: ZXing barkod tarayıcı motoru ile gerçek zamanlı tarama ve flaş desteği.
- Görselden Barkod Tarama: Galeriden seçilen bir fotoğraftaki barkodu otomatik analiz ederek çözme (
getBarcodeFromBitmap). - Barkodsuz Kart Ekleme: Barkodu olmayan kartlar için sadece resim ve isim ile kart oluşturabilme.
- Manuel Giriş: Barkod formatını listeden seçip, kart numarasını elle yazarak kart ekleme.
Kullanıcının kartlarını gruplara ayırmasını ve düzenlemesini sağlar.
- Kategori Sıralama: Kategorilerin listedeki yerini yukarı/aşağı butonlarıyla değiştirme.
- Kategori Düzenleme Ekranı:
- Grup adını değiştirme (isim çakışması kontrolü ile).
- Bu grup altındaki kartları listeleme ve onay kutularıyla (Checkbox) kartları gruba hızlıca dahil etme/çıkarma.
Uygulama, veri kaybını önlemek ve başka cihazlara geçişi kolaylaştırmak için gelişmiş içe/dışa aktarım özelliklerine sahiptir.
- Dışa Aktarma (Export):
- Veritabanı kayıtları ve kart resimlerini bir araya getirerek şifreli bir ZIP dosyası oluşturur.
- Kullanıcı dışa aktarmadan önce şifre belirler ve zip dosyası bu şifreyle şifrelenir.
- İçe Aktarma (Import):
- Yerel F-Card yedeklerini (ZIP, JSON veya CSV formatında) geri yükleme.
- Şifreli ZIP dosyaları için parola sorma.
- Rakip Uygulamalardan Geçiş Desteği:
Uygulama, diğer popüler sadakat kartı uygulamalarının veri yedeklerini çözüp F-Card formatına dönüştürebilir:
- Stocard yedekleri içe aktarma desteği (
StocardImporter). - Fidme yedekleri içe aktarma desteği (
FidmeImporter). - VoucherVault yedekleri içe aktarma desteği (
VoucherVaultImporter). - Catima yedekleri içe aktarma desteği (
CatimaImporter).
- Stocard yedekleri içe aktarma desteği (
Kullanıcının deneyimini kişiselleştirmesini sağlayan ayarlar şunlardır:
- Tema Ayarları:
- Açık Tema / Koyu Tema / Sistem Varsayılanı.
- OLED Siyah Teması: OLED ekranlarda güç tasarrufu sağlamak için tamamen siyah arka plan seçeneği.
- Dinamik tema renkleri seçimi.
- Dil Seçimi: Sistem dilinden bağımsız olarak uygulama içi dil seçeneği (Locale override).
- Kart Ekranı Davranışları:
- Barkod gösterilirken ekran parlaklığını maksimize etme (Açık/Kapalı).
- Ekran yönü kilidi (Sistem yönü, Dikey veya Yatay kilit).
- Kart açıkken ekranın açık kalmasını sağlama (Açık/Kapalı).
- Cihaz kilitliyken kart gösterimine izin verme (Açık/Kapalı).
- Gizlilik ve Güvenlik:
- Kart verilerini üçüncü taraf uygulamalara Content Provider aracılığıyla açma/kapatma izni.
Flutter sürümünde bu entegrasyonlar platform kanalları (Platform Channels) veya uygun paketlerle simüle edilmeli veya uygulanmalıdır.
- Uygulama Kısayolları (App Shortcuts):
- Ana ekrandaki uygulama ikonuna basılı tutulduğunda en son veya en sık kullanılan 3 karta doğrudan erişim sağlayan dinamik kısayollar oluşturur (
ShortcutHelper).
- Ana ekrandaki uygulama ikonuna basılı tutulduğunda en son veya en sık kullanılan 3 karta doğrudan erişim sağlayan dinamik kısayollar oluşturur (
- Güç Menüsü / Hızlı Cihaz Denetimleri (
ControlsProviderService):- Android 11+ cihazlarda, güç menüsünde veya hızlı ayarlar panelinde "Cihaz Denetimleri" (Device Controls) altında sadakat kartlarının listelenmesi ve kilidi açmadan karta hızlıca erişilmesi sağlanır.
- İçerik Sağlayıcı (
CardsContentProvider):- Uygulama veritabanındaki kart bilgilerini, okuma iznine (
READ_CARDS) sahip diğer uygulamalara veya widget'lara güvenli bir şekilde sunar (Okuma amaçlı, salt okunur içerik sağlayıcı).
- Uygulama veritabanındaki kart bilgilerini, okuma iznine (
| Mevcut Java/Android Yapısı | Önerilen Flutter Paketi |
|---|---|
| SQLite (DBHelper) | sqflite veya isar |
| Camera & ZXing Scanner | mobile_scanner or qr_code_scanner |
| Barkod Oluşturma (ZXing Writer) | barcode_widget |
| Resim Kırpma (UCrop) | image_cropper |
| Ekran Açık Tutma (Wakelock) | wakelock_plus |
| Parlaklık Kontrolü | screen_brightness |
| Uygulama Kısayolları | quick_actions |
| Şifreli ZIP İşlemleri | archive veya flutter_archive |
| Tema ve Renk Çıkarımı | palette_generator (Görselden renk alma) |