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ı