现已解决 方案如下:

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. 安装 jdk 和 IDE软件

    1.jdk的安装 通过官方网站获取JDK http://www.oracle.com 针对不同操作系统,下载不同的JDK版本 识别计算机的操作系统 下载完后进行安装,傻瓜式安装,下一步下一步即可.用j ...

  2. H5 应用程序缓存(离线缓存)

    离线缓存这个功能的实现有以下步骤: 1,以nginx做web服务器为例,在mime.types文件中添加一行:text/cache-manifest     manifest,作用是为了让服务器识别该 ...

  3. jquery spa

    1.hashchange监听 2.根据url加载不同页面 $.ajax({ url:"/xx/xx.html" type:"get", dataType:&qu ...

  4. 洛谷——P1613 跑路

    P1613 跑路 题目大意: 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B ...

  5. MySql 日志查看与设置

    错误日志log-errol 开启方式:在my.ini的[mysqld]选项下:添加代码:log-error=E:\log-error.txt 记录内容:主要是记录启动.运行或停止mysqld时出现的致 ...

  6. sql server的 between and 日期问题

  7. 请问spfa+stack 和spfa+queue 是什么原理

    一个是bfs加迭代 一个是dfs加迭代 请问迭代是什么 就是不断地做,做到没有更优的解为止 或者是不断得做,做到逼近答案为止.. 栈比队列更快更节省空间

  8. python正则匹配——中文字符的匹配

    # -*- coding:utf-8 -*- import re '''python 3.5版本 正则匹配中文,固定形式:\u4E00-\u9FA5 ''' words = 'study in 山海大 ...

  9. PHP array_intersect_key()

    定义和用法 array_intersect_key() 函数使用键名比较计算数组的交集. array_intersect_key() 返回一个数组,该数组包含了所有出现在被比较的数组中并同时出现在所有 ...

  10. 2.5-冗余VLAN

    2.5-冗余VLAN     High-Availability(AH) First hop routers on the LAN redundancy Network/首跳冗余网络(出口第一个网络) ...