Cocos2dx中获取Android型号

在cocos开发中,有时会遇到需要获取具体手机型号的问题,下面提供一种在Android下获取手机型号的方法:

首先是头文件,注:在android环境下,必须#include <iostream>,否则编译无法找到std::string

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "platform/android/jni/JniHelper.h"

#define JAVAVM cocos2d::JniHelper::getJavaVM()

#endif
下面是具体获取实现
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
extern "C"
{
    static std::string jni_GetStaticField_string(const char* className, const char* fieldName)
    {
        std::string ret;
        
        do
        {
            JNIEnv *pEnv = 0;
            
            if (JAVAVM->GetEnv((void**)&pEnv, JNI_VERSION_1_4) != JNI_OK)
            {
                break;
            }
            
            if (JAVAVM->AttachCurrentThread(&pEnv, 0) < 0)
            {
                break;
            }
            
            jclass classID = pEnv->FindClass(className);
            if (!classID)
            {
                break;
            }
            
            jfieldID fieldID = pEnv->GetStaticFieldID(classID, fieldName, "Ljava/lang/String;");
            if(!fieldID)
            {
                break;
            }
            
            jstring jstr = (jstring)pEnv->GetStaticObjectField(classID, fieldID);
            
            const char* chars = pEnv->GetStringUTFChars(jstr, NULL);
            ret = chars;
            pEnv->ReleaseStringUTFChars(jstr, chars);
        } while (0);
        
        return ret;
    }
}

std::string getAndroidModel()
{
#define CLASS_NAME "android/os/Build"
    std::string BRAND = jni_GetStaticField_string(CLASS_NAME, "BRAND");
    std::string DEVICE = jni_GetStaticField_string(CLASS_NAME, "DEVICE");
    std::string MODEL = jni_GetStaticField_string(CLASS_NAME, "MODEL");
    return BRAND;// + "_" + DEVICE + "(" + MODEL + ")";根据需要选择返回值
}

#endif
注意最后获得的model是手机具体型号,更具需要返回对应值


注:该方法参考自迷途吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值