管灌系统巡查员智能手机App
zuoxiao
2024-09-24 45e69852f43abe0f79967786ada3c7cf887b5b48
app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
@@ -1,8 +1,13 @@
package com.dayu.pipirrapp.net;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.os.Build;
import android.util.Log;
import com.dayu.pipirrapp.MyApplication;
import com.dayu.pipirrapp.bean.net.CodeResult;
import com.dayu.pipirrapp.bean.net.WeatherResponse;
import com.dayu.pipirrapp.net.subscribers.BaseProgressSubscriber;
@@ -97,10 +102,9 @@
        if (isGet) {
            if (params == null) {
                observable = apiService.requestGet(path);
                observable = apiService.requestGet(path, MyApplication.myApplication.token);
            } else {
                observable = apiService.requestGet(path, params);
                observable = apiService.requestGet(path, params, MyApplication.myApplication.token);
            }
        } else {
            observable = apiService.requestPost(path, params);
@@ -182,21 +186,27 @@
    /**
     * 获取验证码
     *
     * @param params
     * @param listener
     * @param <T>
     */
    public <T> void getCode( Map<String, Object> params, CodeListener listener) {
        Observable observable;
        observable = apiService.getCode(params);
        observable.subscribeOn(Schedulers.io())
                .unsubscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(responseBody -> {
                    listener.onNext((CodeResult) responseBody);
                }, throwable -> {
                    listener.error((Throwable) throwable);
                });
    public <T> void getCode(Map<String, Object> params, CodeListener listener) {
        if (isNetworkAvailable(MyApplication.myApplication)) {
            Observable observable;
            observable = apiService.getCode(params);
            observable.subscribeOn(Schedulers.io())
                    .unsubscribeOn(Schedulers.newThread())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(responseBody -> {
                        listener.onNext((CodeResult) responseBody);
                    }, throwable -> {
                        listener.error((Throwable) throwable);
                    });
        } else {
            listener.onNext(null);
        }
    }
@@ -241,4 +251,35 @@
        }
    }
    /**
     * 判断当前是否有网络
     *
     * @param context
     * @return
     */
    public boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivityManager != null) {
            // 对于 Android 版本大于等于 Android Q (API level 29)
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
                if (capabilities != null) {
                    // 检查网络是否有传输能力(包括 Wi-Fi 和移动数据)
                    if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                        return true;
                    }
                }
            } else {
                // 对于 Android Q 以下版本
                NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
                if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
                    return true;
                }
            }
        }
        return false;  // 无网络连接
    }
}