`
song020cn
  • 浏览: 63170 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cocos2d-x获取设备信息

阅读更多

 

DeviceUtils.h  

//
//  DeviceUtils.h
//  gamemoom
//
//  Created by Song on 14-8-20.
//
//

#ifndef __gamemoom__DeviceUtils__
#define __gamemoom__DeviceUtils__

#include <iostream>
using namespace std;

const char* getModel();

int getSdkVersion();

const char* getOsVersion();

const char* getPhoneNumber();


#endif /* defined(__gamemoom__DeviceUtils__) */

 

DeviceUtils.mm 

Ios端获取设备信息

 

//
//  DeviceUtils.m
//  gamemoom
//
//  Created by Song on 14-8-20.
//
//

#import "DeviceUtils.h"

const char* getModel() {
    NSString *strModel = [[UIDevice currentDevice] model];
    return [strModel UTF8String];
}

int getSdkVersion() {
    return 0;
}

const char* getOsVersion() {
    NSString *strSysVersion = [[UIDevice currentDevice] systemVersion];
    return [strSysVersion UTF8String];
}

const char* getPhoneNumber() {
    return "";
}

 

DeviceUtils.cpp

Android端获取设备信息

//
//  DeviceUtils.cpp
//  gamemoom
//
//  Created by Song on 14-8-20.
//
//

#include "DeviceUtils.h"
#include <platform/android/jni/JniHelper.h>

USING_NS_CC;

static const char* JAVA_CLASS_NAME = "com/easygo/games/utils/DeviceUtils";
extern "C"
{
    static const char* jni_GetStaticMethod_string(const char* className, const char* methodName) {
        std::string ret;
        JniMethodInfo t;
        
        if (JniHelper::getStaticMethodInfo(t, className, methodName, "()Ljava/lang/String;")) {
            jstring retFromJava = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID);
            const char* str = t.env->GetStringUTFChars(retFromJava, 0);
            ret = str;
            
            t.env->ReleaseStringUTFChars(retFromJava, str);
            t.env->DeleteLocalRef(t.classID);
        }
        return ret.c_str();
    }
    
    static int jni_GetStaticMethod_int(const char* className, const char* methodName) {
        int ret = 0;
        JniMethodInfo t;
        
        if (JniHelper::getStaticMethodInfo(t, className, methodName, "()I")) {
            ret = t.env->CallStaticIntMethod(t.classID, t.methodID);
            
            t.env->DeleteLocalRef(t.classID);
        }
        return ret;
    }
}

const char* getModel() {
    return jni_GetStaticMethod_string(JAVA_CLASS_NAME, "getModel");
}

int getSdkVersion() {
    return jni_GetStaticMethod_int(JAVA_CLASS_NAME, "getSdkVersion");
}

const char* getOsVersion() {
    return jni_GetStaticMethod_string(JAVA_CLASS_NAME, "getOsVersion");
}

const char* getPhoneNumber() {
    return jni_GetStaticMethod_string(JAVA_CLASS_NAME, "getPhoneNumber");
}

 

DeviceUtils.java

Android端的具体实现

package com.easygo.games.utils;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.telephony.TelephonyManager;

/**
 * Device Utils
 * Created by song on 14-8-20.
 */
public class DeviceUtils {

    public static Context context;

    public static String getModel() {
        return Build.MODEL;
    }

    public static String getPhoneNumber() {
        TelephonyManager phoneMgr = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
        return phoneMgr.getLine1Number();
    }

    public static int getSdkVersion() {
        return Build.VERSION.SDK_INT;
    }

    public static String getOsVersion() {
        return Build.VERSION.RELEASE;
    }

    public static String getPackageVersionName() {
        try {
            PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
            if (null != packageInfo) {
                return packageInfo.versionName;
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return "";
    }
}

 Android获取本机号码,需要在AndroidManifest.xml中添加权限:

<uses-permission android:name=”android.permission.READ_PHONE_STATE” />

 

参考链接:

Android

Ios

分享到:
评论

相关推荐

    cocos2d-x_v3.16安装及环境变量配置文档

    cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS、Linux 和 Web。cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境...

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    综上所述,从文件信息中可以提取到的知识点主要涉及Cocos2d-x游戏开发框架、使用JavaScript进行游戏开发、以及电子书的下载、阅读体验和版权问题。另外,还涉及到了电子书资源的获取服务以及对应的联系方式。需要...

    cocos2d-x源码素材

    【cocos2d-x源码素材】是一套用于学习cocos2d-x游戏开发的代码资源,它在Windows平台上使用Visual Studio 2010进行编译并通过了测试。这个资源包涵盖了多个重要的游戏开发技术,包括碰撞检测、瓦片地图(Tile Map)...

    Cocos2d-x 3.x制作2048

    在《Cocos2d-x 3.x制作2048》这本书中,作者详细介绍了使用Cocos2d-x 3.0版本,通过C++语言开发2048游戏的全过程。2048是一款非常流行的数字拼接游戏,玩家需要通过滑动屏幕上下左右来移动数字卡片,相同数字的卡片...

    cocos2d-1.0.1-x-0.10.0

    `cocos2d-1.0.1-x-0.10.0` 版本可能包含了一些特定的bug修复和性能提升,但具体的更新日志需要查看当时的发行说明来获取详细信息。这个压缩包中的文件应该包含了源码、库文件、示例项目、文档等内容,帮助开发者搭建...

    cocos2d-x教程

    cocos2d-x拥有活跃的社区,开发者可以在论坛、GitHub等平台获取帮助,分享经验,查找或贡献代码示例。 总之,cocos2d-x教程涵盖了游戏开发的各个方面,从基础概念到高级技巧,通过学习和实践,开发者能够熟练掌握这...

    cocos2d-x-android环境搭建文档

    你可以从Cocos2d-x官方网站获取最新稳定版的源码。解压后,将目录添加到PATH环境变量中,这样可以在命令行中直接调用Cocos2d-x的工具。 对于Eclipse的安装,虽然Cocos2d-x官方推荐使用Visual Studio,但有些开发者...

    cocos2D-x3.10安装

    2. **下载Cocos2D-x3.10**:从官方站点获取Cocos2D-x的3.10版本,并解压到指定目录,例如D盘。 3. **安装Python**:Cocos2D-x最初基于Python开发,因此需要Python环境。推荐安装Python 2.7.3 64位版本。安装完成后...

    cocos2d-x默认第一个模板

    cocos2d-x提供了内置的调试工具,如`log`函数进行日志输出,`ccLOG`方便在控制台查看调试信息。同时,可以使用`Director::getInstance()-&gt;getRunningScene()-&gt;getChildren()`遍历场景中的所有节点,进行检查和调试。...

    cocos2d-x-Introduction.zip_cocos2d_cocos2d-x

    cocos2d-x拥有庞大的开发者社区,提供了丰富的教程、示例代码、插件和第三方库,开发者可以通过社区获取帮助,解决问题。 总结起来,cocos2d-x是一款功能强大、易于学习和使用的2D游戏开发引擎,无论你是游戏开发...

    Cocos2d-x实战C++卷 关东升著 完整版含目录

    由于Cocos2d-x支持多平台开发,学习使用Cocos2d-x和C++进行游戏开发,能够帮助开发者学习如何编写一次代码,然后将其部署到不同的设备和操作系统上。 7. 社区支持 作为流行的开源游戏框架,Cocos2d-x拥有一个活跃的...

    第四课:Cocos2D-X跨平台开发环境搭建(win32)

    Cocos2D-X 源码获取 首先,你需要从Cocos2D-X的官方网站(http://www.cocos2d-x.org/)下载最新的源码。确保选择适用于Windows平台的版本,以便后续的编译和开发工作。 ### 2. 安装必备软件 - **UltraISO PE 9.6...

    cocos2d-x改写《魔塔》案例 2.1.1 中期

    《cocos2d-x改写《魔塔》案例 2.1.1 中期》是一个基于cocos2d-x 2.1.1版本的手机游戏开发项目,它旨在通过重制经典游戏《魔塔》来教授和展示cocos2d-x引擎的使用技巧。在这一中期阶段的代码中,开发者已经完成了游戏...

    Cocos2d-x 2.1.3 帮助文档

    7. **社区与资源**:可能包含指向Cocos2d-x社区论坛、开发者博客和官方文档的链接,方便开发者寻求帮助和获取最新的开发资讯。 8. **问题解决**:列出常见问题及其解决方案,帮助开发者解决在使用Cocos2d-x过程中...

    cocos2d-x 2.1.4以后版本新建项目的方式

    1. **下载cocos2d-x SDK**:首先,你需要从cocos2d官方网站获取最新版本的SDK,将其解压缩到你选择的任意位置。 2. **安装Python**:接着,访问Python官方网站,下载并安装Python SDK。安装完成后,记得在系统环境...

    cocos2d-x 地图的缩放和拖动

    在cocos2d-x这个强大的2D游戏开发框架中,地图的缩放和拖动功能是构建可交互、可探索的游戏世界的关键元素。cocos2d-x提供了丰富的API和工具来实现这些动态效果,使得玩家可以自由地查看游戏场景的各个角落。下面将...

    cocos2d-x学习笔记

    《cocos2d-x学习笔记》 在学习cocos2d-x时,了解其核心组件和工作流程至关重要。AppDelegate是cocos2d-x框架中的一个关键类,它扮演着应用程序入口点的角色,处理应用程序的生命周期事件。让我们深入探讨...

    cocos2d-x-3rd-party-libs-bin.zip支持的libluajit.a文件

    《cocos2d-x与libluajit.a:解决设备崩溃问题》 在移动游戏开发领域,cocos2d-x是一个广泛使用的开源2D游戏引擎,它基于C++,并且支持Lua脚本语言,为开发者提供了高效且便捷的游戏制作工具。然而,在实际开发过程...

    Cocos2d-x高级开发教程.pdf

    Cocos2d-x是一个开源的平面游戏开发框架,它基于另一个著名的游戏引擎Cocos2d-iPhone设计。Cocos2d-x继承了Cocos2d系列的核心优势,如易用性、高效性和灵活性。它不仅保留了这些特点,还具备强大的跨平台能力,能够...

Global site tag (gtag.js) - Google Analytics