现已解决 方案如下:

1、使用 jni 调用 java 方法 启动相册选择框
2、使用java将获取的图片保存到本地
3、使用Cocos2d-x中 CCImage 读取

JAVA代码如下:

//启动图片选择框
      private void launchCamera()
      {
          // TODO Auto-generated method stub
          Intent intent = new Intent();
          intent.setType("image/*");//set intent type
          intent.setAction(Intent.ACTION_GET_CONTENT);
          
          //取得图片信息返回MainActivity                
          startActivityForResult(intent,1);
      }
      
      //图片选择回调
      protected void onActivityResult(int requestCode,int resultCode,Intent data)
      {
          if(resultCode==RESULT_OK)
          {
              Uri uri = data.getData();
              
              //通过URI获取图片绝对地址            
              String[] proj = { MediaStore.Images.Media.DATA };
              
              Cursor cursor = managedQuery(uri,proj,null,null,null);
              
              int actual_image_column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
              
              //游标跳到首位,防止越界            
              cursor.moveToFirst();
              
              String img_path = cursor.getString(actual_image_column_index);
        
              //通过地址获得位图信息            
              Bitmap bitmap =BitmapFactory.decodeFile(img_path);                
              
              saveMyBitmap("001", bitmap);
              
           }
          
      }

//保存图片到本地
      private void saveMyBitmap(String bitName,Bitmap mBitmap) 
      {
              File f = new File("/sdcard/" + bitName + ".png");
              try {
                      
                      f.createNewFile();
                      
              } catch (IOException e) {
               // TODO Auto-generated catch block
                      
              }
              
              FileOutputStream fOut = null;
              try {
              
                      fOut = new FileOutputStream(f);
                      
              } catch (FileNotFoundException e) {
               
                      e.printStackTrace();
              }
              
              mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
              
              try {
              
                      fOut.flush();
                      
              } catch (IOException e) {
               
                      e.printStackTrace();
              }
              
              try {
               
                      fOut.close();
                      
              } catch (IOException e) {
               
                      e.printStackTrace();
              }
              
      }

C++代码如下:

//读取本地存储数据
CCSprite* LoadingLayer::loadImage()
{
    CCSprite* tempsprite = NULL;
    
    const char* path = "/sdcard/001.png";
    FILE* fp = fopen(path, "rb");
    if (!fp)
    {
        return tempsprite;
    }
    
    fseek(fp,0,SEEK_END);
    int len = ftell(fp);
    fseek(fp,0,SEEK_SET);
    char* buf = (char*)malloc(len);
    fread(buf,len,1,fp);
    fclose(fp);
    
    if(len==0 || buf==NULL)
    {
        return tempsprite;
    }
    
    CCImage* img = new CCImage;
    img->initWithImageData(buf,len);
    free(buf);
    cocos2d::CCTexture2D* texture = new cocos2d::CCTexture2D();
    texture->initWithImage(img);
    img->release();
    tempsprite = CCSprite::createWithTexture(texture);
    texture->release();
    
    return tempsprite;
    
}

android平台 cocos2d-x 读取相册数据的更多相关文章

  1. Android平台使用SQLite数据库存储数据

    创建一个DataBaseHelper的类,这个类是继承SQLiteOpenHelper类的,这个类中包含创建数据库.打开数据库.创建表.添加数据和查询数据的方法.代码如下: package com.e ...

  2. Java基础知识强化之网络编程笔记16:Android网络通信之 使用Http的Get方式读取网络数据(基于HTTP通信技术)

    使用Http的Get方式读取网络数据,使用Get方式与网络通信是最常见的Http通信,建立链接之后就可以通过输入流读取网络数据. 详见:Android(java)学习笔记209:采用get请求提交数据 ...

  3. Android平台介绍

    一.Android平台介绍 什么是智能手机 具有独立的操作系统,独立的运行空间,可以由用户自行安装软件.游戏.导航等第三方应用程序,并可以通过移动通讯网络来实现无线网络接入的手机类型总称. 智能手机操 ...

  4. uni-app开发经验分享十二: Android平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限策略及提示信息

    Android平台从6.0(API23)开始系统对权限的管理更加严格,所有涉及敏感权限都需要用户授权允许才能获取.因此一些应用基础业务逻辑需要的权限会在应用启动时申请,并引导用户允许. 读写手机存储权 ...

  5. Android——配置文件的保存SharedPreferences进行数据存储

    很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果 ...

  6. 高通Android平台硬件调试之Camera篇

    之前一段时间有幸在高通android平台上调试2款camera sensor,一款是OV的5M YUV sensor,支持jpeg out,同时也支持AF,调试比较比较简单,因为别的项目已经在使用了, ...

  7. Android中解析JSON形式的数据

    1.JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式, ...

  8. 基于Android 平台简易即时通讯的研究与设计[转]

    摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...

  9. Android 平台 HTTP网速測试 案例 API 分析

    作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/25996817 工信部规定的网速測试标准 : 除普通网页測速 ...

随机推荐

  1. easyui 网址

    http://www.runoob.com/jeasyui/jeasyui-datagrid-datagrid23.html http://www.jeasyui.com http://fineui. ...

  2. select 如何将文本居中

    开始测试了几种方式但是结果都是失败的,最后测试一种方式终于成功了,所以做下笔记: select{ width: 3.2rem; height: 1.2rem; border-radius: 0.6re ...

  3. poj3176-Cow Bowling【dp】

    The cows don't use actual bowling balls when they go bowling. They each take a number (in the range ...

  4. [luogu2154 SDOI2009] 虔诚的墓主人(树状数组+组合数)

    传送门 Solution 显然每个点的权值可以由当前点上下左右的树的数量用组合数\(O(1)\)求出,但这样枚举会T 那么我们考虑一段连续区间,对于一行中两个常青树中间的部分左右树的数量一定,我们可用 ...

  5. 升级 Linux 内核版本(编译源代码)

    升级内核版本(自己编译源码) 从 linux 官网 https://www.kernel.org/ 下载内核源码 解压 tar -xvf linux-4.16.8.tar.xz cd linux-4. ...

  6. npm和gulp学习

    npm的使用 node Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一种JavaScript语言运行平台,和浏览器这个运行平台是同一个概念. npm np ...

  7. 单例模式的python实现

    # 本实例主要介绍单例模式 # 1.什么是单例模式 # 1. 确保有且只有一个对象被创建 # 2. 为对象提供一个访问点,以使程序可以全局访问该对象 # 3. 控制共享资源的并行访问 # 2.单例模式 ...

  8. 联赛前集训日记Day1

    考试 炸的凄惨 T1 显然要高精搞一下,然而我的$DFS$竟然比我的$O(n^{2})$递推快 T2 欧拉路径的题,很不可做的样子,就没敢费时间打 T3 $DFS$枚举可过,然而我太蠢 GG 刷题 改 ...

  9. [bzoj2599][IOI2011]Race_树上点分治

    Race bzoj-2599 题目大意:询问一颗树上最短的.长度为k的链,边有边权,n个节点. 注释:$1\le n \le 2\cdot 10^5$,$1\le k \le 10^6$. 想法:树上 ...

  10. HDU 4533

    一道好题.想了好久没想出来,只是觉得总要二分独立处理矩形.感觉自己在把问题转化为数学公式以及分解问题的方面的能力很不足. http://blog.csdn.net/wh2124335/article/ ...