cocos2dx实现获得设备的网络连接状态

本文介绍了在Cocos2dx中如何通过JNI和混编方式,分别在Android和iOS平台上获取设备的网络连接状态。在Android上利用Java的ConnectivityManager,而在iOS上借助Reachability类。

对于此类需要访问设备的问题,触控没有给出具体的方法。下面是我的简单实现,欢迎批评、指正

既然是跨平台,那就要分别解决了,先是Android的

Android:思路就是使用JNI调用Java的静态函数并返回到C++中。具体的请看代码:

C++函数:

void NetworkHelper::setNetType(){
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32
_netType = false;
#elif CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
bool ret = false;
JniMethodInfo info;
bool bHave = JniHelper::getStaticMethodInfo(info, "org/cocos2dx/lib/Cocos2dxActivity", "getNetType", "()Z");
if (bHave){
ret = info.env->CallStaticBooleanMethod(info.classID, info.methodID);
info.env->DeleteLocalRef(info.classID);
}
_netType = ret;
#endif

}

Java的静态函数:

public static boolean getNetType(){
    Log.v("df","join");
    ConnectivityManager connectivityManager = (ConnectivityManager)sContext.getSystemService(sContext.CONNECTIVITY_SERVICE);  
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();  
        if(networkInfo == null || !networkInfo.isAvailable())  
        {  
            //当前无可用网络 
        return false;
        }  
        else   
        {  
            //当前有可用网络  
        return true;
        }    
 }

IOS:思路就是使用混编,调用ObjectC的函数,使用Appel提供的Reachability类来实现功能。具体的请看代码:

void NetworkHelper::setNetType(){

    bool _netType;
    Reachability *reach = [Reachability reachabilityForInternetConnection];
    NetworkStatus netStatus = [reach currentReachabilityStatus];
    if (netStatus == NotReachable){
       _netType = false;
    }
    else{
        _netType = true;
    }
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值