android平台 cocos2d-x 读取相册数据




现已解决 方案如下:

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 读取相册数据

时间: 2024-10-07 00:00:34

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

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

创建一个DataBaseHelper的类,这个类是继承SQLiteOpenHelper类的,这个类中包含创建数据库.打开数据库.创建表.添加数据和查询数据的方法.代码如下: package com.example.message_board; import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.ut

一条短信控制你的手机! Android平台的SQL注入漏洞浅析

14年11月笔者在百度xteam博客中看到其公开了此前报告给Google的CVE-2014-8507漏洞细节——系统代码在处理经由短信承载的WAP推送内容时产生的经典SQL注入漏洞,影响Android 5.0以下的系统.于是对这个漏洞产生了兴趣,想深入分析看看该漏洞的危害,以及是否能够通过一条短信来制作攻击PoC. 在断断续续的研究过程中,笔者发现了SQLite的一些安全特性演变和短信漏洞利用细节,本着技术探讨和共同进步的原则,结合以前掌握的SQLite安全知识一同整理分享出来,同各位安全专家一

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

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

Android 读取 json 数据(遍历jsonarray和jsonboject)-FenGKun

Android 读取 json 数据(遍历jsonarray和jsonboject) public String getJson(){ String jsonString = "{\"FLAG\":\"flag\",\"MESSAGE\":\"SUCCESS\",\"name\":[{\"name\":\"jack\"},{\"name\"

Android 读取网络数据

通过HttpResponse  实现 首先在AndroidManifest中配置允许网络访问    <uses-permissionandroid:name="android.permission.INTERNET"/> 然后实现代码 示例代码如下 String url = "http://www.baidu.com"; HttpGet request = new HttpGet(url); try { HttpResponseresponse = ne

Android平台介绍

一.Android平台介绍 什么是智能手机 具有独立的操作系统,独立的运行空间,可以由用户自行安装软件.游戏.导航等第三方应用程序,并可以通过移动通讯网络来实现无线网络接入的手机类型总称. 智能手机操作系统 Android.IOS.Windows Phone.BlackBerry.Symbian 什么是Android Android是一种基于Linux的开源操作系统,主要使用于移动设备,例如智能手机.平板电脑.智能手表.智能电视等等.由Google公司和开放手机联盟领导及开发.Android操作

Android平台jieahoa

一.Android平台介绍 什么是智能手机 具有独立的操作系统,独立的运行空间,可以由用户自行安装软件.游戏.导航等第三方应用程序,并可以通过移动通讯网络来实现无线网络接入的手机类型总称. 智能手机操作系统 Android.IOS.Windows Phone.BlackBerry.Symbian 什么是Android Android是一种基于Linux的开源操作系统,主要使用于移动设备,例如智能手机.平板电脑.智能手表.智能电视等等.由Google公司和开放手机联盟领导及开发.Android操作

基于Android平台的i-jetty网站智能农业监控系统

基于android平台i-jetty网站的智能农业监控系统 摘要:传统的监控系统,一般是基于PC的有线通信传输,其有很多不足之处,如功耗较高.布线成本高.难度大,适应性差,可扩展性不强,增加新的通信线路需要再次布线施工,而且维护起来也比较麻烦,一旦线路出问题,需要繁琐的检查.而嵌入式Web监控系统是基于物联网技术,其无线通信技术具有成本低廉.适应性强.扩展性强.信息安全.使用维护简单等优点. 智能农业中,种植大棚是通过大棚内安装温湿度以及光照传感器,来对农作物的环境参数进行实时采集,由Web监控

Win32游戏到Android平台移植时必须解决的问题集锦

这方面的问题很多,在目前网络上很难找到满足的答案.我在这里将把自己的一个游戏从WIN32到ANDROID移植过程必须面对和要解决的问题,列举出来(有些是已经得到回答的,有些还未解决). 1,如何显示自己的游戏程序图标 这个使用传统的android平台思路实现即可,即修改工程的proj.android\res路径下drawable-hdpi.drawable-ldpi.drawable-mdpi.drawable-xhdpi下的icon.png文件. 注 意:一次试验中我仅修改了drawable-