Harita Verisi Yükleme Modülü
Yolbil API, kullandığı harita verisinin aşırı şekilde sıkıştırılmış olmasından kaynaklı olarak harita verisinde oluşabilecek küçük hatalar ve harita versiyonu güncellemelerinin alınması konusunda oldukça kırılgan bir yapıdadır. Bu durumda uygulamanın hata atmasının veya açılmamasının önüne geçmek amacıyla uygulama girişi sırasında dosyaları kontrol edecek olan FileControl sınıfı kullanılmaktadır.
Kurulum
FileControl kütüphanesine ait Dependency modülün build.gradle
dosyasına eklenir.
dependencies {
...
implementation 'com.liulishuo.filedownloader:library:1.7.6'
}
AndroidManifest application tag’i içine aşağıdaki satırlar eklenir:
<service android:name="com.liulishuo.filedownloader.services.FileDownloadService"
android:process=":filedownloader"/>
– Bunun ardından Application sınıfı onCreate metodu içinde dosya indirme için kullanılacak kütüphane aşağıdaki şekilde başlatılır.
public ExampleApplication extends Application {
...
@Override
public void onCreate() {
super.onCreate();
FileControl.setup(this);
...
}
...
}
Not: Eğer uygulama halihazırda başka bir Application sınıfı kullanıyor ve bu sınıf değiştirilemez bir yapıda ise yeni bir Application sınıfı proje içerinde oluşturularak daha önce kullanılan Application sınıfından extends edilebilir.
Kullanım
FileController Listener’ını Activity’e implement ediyoruz.
class MainActivity implements FileControl.FileControlListener {...}
Daha sonra checkMapFiles
metodu ile dosya kontrolü başlatılır.
FileControl.checkMapFiles(context, String storageDataFolderName, listener,
"https://yolbil.basarsoft.com.tr/yolbildata/yolbildata132/");
Bu adım zorunlu değildir. Ancak FileControl’ün kontrol etmesini istediğiniz ve Yolbil içerisinde varsayılan olarak olmayan farklı verilerinizi de FileControl aracılığı ile cihazlara indirebilirsiniz. Bunun için Yolbil harita verisinin içerisine bu dosyaları ekleyerek SHA1 hash değerini örnekteki gibi ekledikten sonra FileController bu dosyaları da kontrol edecektir.
FileControl.fileSha.put("y.json", "bb1e17fa71f22408251be894b934ea17c5235da5");
FileControl.fileSha.put("y.png", "e10a35e0538d03051f80c427ed0e94c8a03fc87b");
public interface FileControlListener {
void onProgressUpdate(FileControl.ControlProgress progress);
void onControlComplete();
void onControlFail();
}
Sınıf Referansları
-
FileControl Dosya kontrol ve güncelleyici yardımcısı
-
FileControlListener İşlem durumu bildirim sınıfı
-
ProgressType İşlem durumu tipi
-
ControlProgress [Abstract] İşlem durumu bildirim soyut sınıfı
-
-
DownloadingProgress İndirme durumu bildirim nesnesi
- DownloadingState İndirme durumu tipi
-
FileCheckProgress Dosya kontrol durumu bildirim nesnesi
- FileCheckState Dosya kontrol durumu tipi
-
ErrorProgress Hatalı durum bildirimi nesnesi
- ProgressErrorType Hata tipi