第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 Android 上選擇/強(qiáng)制使用移動(dòng)數(shù)據(jù)(或 wifi)進(jìn)行網(wǎng)絡(luò)通話?

如何在 Android 上選擇/強(qiáng)制使用移動(dòng)數(shù)據(jù)(或 wifi)進(jìn)行網(wǎng)絡(luò)通話?

ibeautiful 2023-03-09 10:28:28
我有一個(gè)瘋狂的用戶案例,要求僅通過(guò)移動(dòng)數(shù)據(jù) (SIM) 調(diào)用某些 REST 服務(wù)。我們想通過(guò) wifi 發(fā)送其余數(shù)據(jù)。Android上是否可以強(qiáng)制通過(guò)哪種網(wǎng)絡(luò)發(fā)送數(shù)據(jù)?是否可以在同一個(gè)應(yīng)用程序和同一個(gè)會(huì)話中通過(guò)移動(dòng)數(shù)據(jù)發(fā)送一些數(shù)據(jù)并通過(guò) wifi 發(fā)送其他數(shù)據(jù)?另外,測(cè)試呼叫是否通過(guò)正確的網(wǎng)絡(luò)類型發(fā)送的最佳方法是什么?
查看完整描述

2 回答

?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

我的使用:


@TargetApi(21)

private fun getMobileNetWork() {

    connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

    val builder = NetworkRequest.Builder()

    builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)

    builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)//TRANSPORT_WIFI

    val build = builder.build()

    connectivityManager!!.requestNetwork(build, networkCallback)

}



val networkCallback = object : ConnectivityManager.NetworkCallback() {

    override fun onAvailable(network: Network) {

        super.onAvailable(network)

        //Use the network to do your thing

    }


    override fun onLost(network: Network?) {

        super.onLost(network)

    }

    override fun onUnavailable() {

        super.onUnavailable()

    }

}

okhttp3中的網(wǎng)絡(luò)使用:


    val builder = OkHttpClient.Builder()

            .connectTimeout(15L, TimeUnit.SECONDS)

            .readTimeout(20L, TimeUnit.SECONDS)

            .writeTimeout(15L, TimeUnit.SECONDS)

            .socketFactory(network.socketFactory)

            .dns {

                network.getAllByName(it).asList()

            }


查看完整回答
反對(duì) 回復(fù) 2023-03-09
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以使用 ConnectivityManager 檢查哪種網(wǎng)絡(luò)類型可用,如果 wifi 已連接,請(qǐng)調(diào)用您的 api,否則向用戶顯示對(duì)話框以通知他此 api 需要打開 wifi 或相反。


您可以使用 Connectivity 類來(lái)檢查網(wǎng)絡(luò)


public class Connectivity {


public static NetworkInfo getNetworkInfo(Context context){

    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    return cm.getActiveNetworkInfo();

}



public static boolean isConnected(Context context){

    NetworkInfo info = Connectivity.getNetworkInfo(context);

    return (info != null && info.isConnected());

}


public static boolean isConnectedWifi(Context context){

    NetworkInfo info = Connectivity.getNetworkInfo(context);

    return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI);

}


public static boolean isConnectedMobile(Context context){

    NetworkInfo info = Connectivity.getNetworkInfo(context);

    return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_MOBILE);

}


public static boolean isConnectedFast(Context context){

    NetworkInfo info = Connectivity.getNetworkInfo(context);

    return (info != null && info.isConnected() && Connectivity.isConnectionFast(info.getType(),info.getSubtype()));

}


public static boolean isConnectionFast(int type, int subType){

    if(type==ConnectivityManager.TYPE_WIFI){

        return true;

    }else if(type==ConnectivityManager.TYPE_MOBILE){

        switch(subType){

        case TelephonyManager.NETWORK_TYPE_1xRTT:

            return false; // ~ 50-100 kbps

        case TelephonyManager.NETWORK_TYPE_CDMA:

            return false; // ~ 14-64 kbps

        case TelephonyManager.NETWORK_TYPE_EDGE:

            return false; // ~ 50-100 kbps

        case TelephonyManager.NETWORK_TYPE_EVDO_0:

            return true; // ~ 400-1000 kbps

        case TelephonyManager.NETWORK_TYPE_EVDO_A:

            return true; // ~ 600-1400 kbps

        case TelephonyManager.NETWORK_TYPE_GPRS:

            return false; // ~ 100 kbps

        case TelephonyManager.NETWORK_TYPE_HSDPA:

            return true; // ~ 2-14 Mbps

        case TelephonyManager.NETWORK_TYPE_HSPA:

            return true; // ~ 700-1700 kbps

        case TelephonyManager.NETWORK_TYPE_HSUPA:

            return true; // ~ 1-23 Mbps

        case TelephonyManager.NETWORK_TYPE_UMTS:

            return true; // ~ 400-7000 kbps

        /*

         * Above API level 7, make sure to set android:targetSdkVersion 

         * to appropriate level to use these

         */

        case TelephonyManager.NETWORK_TYPE_EHRPD: // API level 11 

            return true; // ~ 1-2 Mbps

        case TelephonyManager.NETWORK_TYPE_EVDO_B: // API level 9

            return true; // ~ 5 Mbps

        case TelephonyManager.NETWORK_TYPE_HSPAP: // API level 13

            return true; // ~ 10-20 Mbps

        case TelephonyManager.NETWORK_TYPE_IDEN: // API level 8

            return false; // ~25 kbps 

        case TelephonyManager.NETWORK_TYPE_LTE: // API level 11

            return true; // ~ 10+ Mbps

        // Unknown

        case TelephonyManager.NETWORK_TYPE_UNKNOWN:

        default:

            return false;

        }

    }else{

        return false;

    }

}

}


檢查可用的網(wǎng)絡(luò)類型


if (isConnectedWifi(ctx) {

        // Call api

    }else if (isConnectedMobile(ctx)){

       // Show dialog to user to inform him that this api required open wifi

    }else{

       //

    }


查看完整回答
反對(duì) 回復(fù) 2023-03-09
  • 2 回答
  • 0 關(guān)注
  • 313 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)