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;

}

时间: 2024-10-10 13:41:38

android台 cocos2d-x 翻阅相册数据的相关文章

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

Android Gson解析多层嵌套复杂数据

目前解析json有三种工具:org.json(Java常用的解析),fastjson(阿里巴巴工程师开发的),Gson(Google官网出的),解析速度最快的是Gson,下载地址:https://code.google.com/p/google-gson/ 什么是JSON: JSON即JavaScript Object Natation, 它是一种轻量级的数据交换格式, 与XML一样, 是广泛被采用的客户端和服务端交互的解决方案. JSON对象:  JSON中对象(Object)以"{"

android获取某应用的帧数据

android获取某应用的帧数据: 说明: (打开手机 开发者选项-GPU显示配置文件(显示于 adb shell dumpsys gfxinfo)勾上,只有4.1以上支持) 在android4.1中,谷歌提供了一个工具来,叫做" GPU呈现模式分析(Profile GPU rendering)", 在开启这个功能后,系统就会记录保留每个界面最后128帧图像绘制的相关时间信息 开始操作: 命令行 adb shell dumpsys gfxinfo com.taobao.mobile.d

android通过httpClient请求获取JSON数据并且解析

android通过httpClient请求获取JSON数据并且解析:http://www.cnblogs.com/gzggyy/archive/2013/05/08/3066288.html Android--使用Http向服务器发送请求并取得返回结果,下载图片:http://www.2cto.com/kf/201307/229489.html Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据):http://blog.csdn.net/he

Android中使用Gson解析JSON数据的两种方法

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组

Android利用代码清除App的数据和重启设备

/** * 利用代码清除App的数据 * 平常我们在清除App的数据时,多半在设置中找到对应的App * 然后选择其清除数据.下面给出代码实现. * * 注意事项: * 1 设备需要root * 2 注意在命令的末尾需要加上换行\n * 这就相当于我们平时在Dos中输入命令后再换行一样. * 否则命令不会执行. */ private void cleanData(String packageName){ try { System.out.println("---> 9527 开始清除 &q

Android用surface直接显示yuv数据(二)

上一篇文章主要是参照AwesomePlayer直接用SoftwareRenderer类来显示yuv,为了能用到这个类,不惜依赖了libstagefright.libstagefright_color_conversion等动态静态库,从而造成程序具有很高的耦合度,也不便于我们理解yuv数据直接显示的深层次原因. 于是我开始研究SoftwareRenderer的具体实现,我们来提取SoftwareRenderer的核心代码,自己来实现yuv的显示. SoftwareRenderer就只有三个方法,

Android用surface直接显示yuv数据

研究了一段时间Android的surface系统,一直执着地认为所有在surface或者屏幕上显示的画面,必须要转换成RGB才能显示,yuv数据也要通过颜色空间转换成RGB才能显示.可最近在研究stagefright视频显示时发现,根本找不到omx解码后的yuv是怎么转换成RGB的代码,yuv数据在render之后就找不到去向了,可画面确确实实的显示出来了,这从此颠覆了yuv必须要转换成RGB才能显示的真理了. 稍微看一下AsomePlayer的代码,不难发现,视频的每一帧是通过调用了Softw

android利用剪切板来实现数据的传递

在Android开发中我们经常要遇到的一个问题就是数据在不同的Activity之间的共享.在Android开发中有很多种方法可以达到这个目地. 这里介绍一种比较常见.又常用的一种方法就是使用剪切板.我们都有用过Window.Linux上的Copy.这里介绍的就是这种. 调用服务 [java] view plaincopy ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOAR