现已解决 方案如下:

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. Spring Boot 集成 JWT 实现单点登录授权

    使用步骤如下:1. 添加Gradle依赖: dependencies { implementation 'com.auth0:java-jwt:3.3.0' implementation('org.s ...

  2. HDU 2414 Chessboard Dance(模拟题,仅此纪念我的堕落)

    题目 模拟题也各种wa,我最近真的堕落了,,,,,智商越来越为负数了!!!!!!!! #include<stdio.h> #include<string.h> #include ...

  3. HDU-4055 Number String 动态规划 巧妙的转移

    题目链接:https://cn.vjudge.net/problem/HDU-4055 题意 给一个序列相邻元素各个上升下降情况('I'上升'D'下降'?'随便),问有几种满足的排列. 例:ID 答: ...

  4. App后台开发运维和架构实践学习总结(2)——RESTful API设计技巧

    前言 移动互联网时代,RESTful API成为越来越重要的移动端和服务器端交互的形式.尤其是在很多互联网公司或者传统行业拥抱移动互联网的时候,一套设计良好的Restful API能够帮助互联网产品支 ...

  5. AngularJS:让submit重新生效

    当我们在html中声明了ng-app后,form的submit就会失效,必须通过angularJS来处理.如果这时还是想用普通的方式提交的话,需要修改form标签,如下所示: <form met ...

  6. LeetCode 122 Best Time to Buy and Sell Stock II(股票买入卖出的最佳时间 II)

    翻译 话说你有一个数组,当中第i个元素表示第i天的股票价格. 设计一个算法以找到最大利润. 你能够尽可能多的进行交易(比如.多次买入卖出股票). 然而,你不能在同一时间来多次交易. (比如.你必须在下 ...

  7. 深入分析JavaWeb Item38 -- 监听器(Listener)高速学习

    一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其它对象身上发生的事件或状态改变进行监听和对应处理的对象,当被监视的对象发生情况时,马上採取对应的行动.监听器事实上就是一个实现特定接口的普 ...

  8. Java怎样获取Content-Type的文件类型Mime Type

    在Http请求中.有时须要知道Content-Type类型,尤其是上传文件时.更为重要.尽管有些办法可以解决,但都不太准确或者繁琐,索性我发现一个开源的类库可以解决相对完美的解决问题,它就是jMime ...

  9. POJ-2201-Cartesian Tree(笛卡尔树)

    Description Let us consider a special type of a binary search tree, called a cartesian tree. Recall ...

  10. WebGIS开发技术杂谈

    WebGIS项目的开发主要是B/S架构.最流行的是clientjavascript,server端java. 另外还有flexclient. client主要完毕用户交互.向server端发送请求并传 ...