管灌系统巡查员智能手机App
zuoxiao
2024-09-09 f163344ffeb1e699fa1a2dfb8a70055bb1b9be7e
app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
@@ -1,38 +1,27 @@
package com.dayu.pipirrapp.net;
import android.content.Context;
import android.util.Log;
import com.dayu.pipirrapp.bean.WeatherResponse;
import com.dayu.pipirrapp.net.subscribers.BaseProgressSubscriber;
import com.dayu.pipirrapp.net.subscribers.ProgressSubscriber;
import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
import com.dayu.pipirrapp.utils.MapJpgUtils;
import com.dayu.pipirrapp.utils.MyJsonParser;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.disposables.CompositeDisposable;
import io.reactivex.rxjava3.functions.Function;
import io.reactivex.rxjava3.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
@@ -43,11 +32,14 @@
 */
public class ApiManager {
    static String TAG = "ApiManager";
    static ApiManager apiManager;
    //文件上传失败重复次数
    int uplodFilerepeatSize = 3;
    ApiService apiService;
    private CompositeDisposable compositeDisposable = new CompositeDisposable(); // 管理订阅事件
    /**
     * 初始化通信框架
@@ -60,6 +52,7 @@
    public ApiManager() {
        apiService = RetrofitClient.getInstance().getApiService();
    }
    public static ApiManager getInstance() {
@@ -157,14 +150,14 @@
    }
    /**
     *  获取天气
     * @param data 经纬度(格式是 纬度:经度,英文冒号分隔)
     * 获取天气
     *
     * @param data     经纬度(格式是 纬度:经度,英文冒号分隔)
     * @param callback
     * @param <T>
     */
    public <T> void requestWeather(String data,Callback<WeatherResponse> callback) {
    public <T> void requestWeather(String data, Callback<WeatherResponse> callback) {
        Map<String, Object> params = new HashMap<>();
        params.put("key", "S6Tq4pvOakMuWRrg0");
        params.put("location", data);
@@ -176,4 +169,39 @@
    }
    public void donwLoadTile(Context context, String urlPath) {
        Observable<ResponseBody> observable;
        observable = apiService.downloadTile(urlPath);
        compositeDisposable.add(
                observable
                        .subscribeOn(Schedulers.io())  // 网络请求在 I/O 线程中进行
                        .observeOn(Schedulers.io())    // 回调处理也在 I/O 线程
                        .subscribe(
                                responseBody -> {
                                    boolean success = false;
                                    if (!MapJpgUtils.getInsatance(context).isHasFiles(urlPath)) {
                                        success = MapJpgUtils.getInsatance(context).saveTileToCache(urlPath, responseBody);
                                    }
                                    if (success) {
                                        Log.d(TAG, "Download success for tile: " + urlPath);
                                    } else {
                                        Log.e(TAG, "Failed to save tile to disk: " + urlPath);
                                    }
                                },
                                throwable -> Log.e(TAG, "Download failed for tile: " + urlPath)
                        )
        );
    }
    // 停止线程池,释放资源
    public void clearDisposables() {
        if (!compositeDisposable.isDisposed()) {
            compositeDisposable.dispose();
        }
    }
}