手机游戏截图并通过JNI保存到手机内存特定文件夹下。

使用JNI将手机游戏截图保存至本地
本文介绍如何在Cocos2d-x游戏中实现截图并利用JNI将其保存到手机内存的特定文件夹,主要涉及Android平台上的权限设置及代码实现。

在做游戏界面截图经常使用,如果想把截图图片保存到SD卡就需要这样做了。

截图的图片保存在,游戏包Files文件夹下面。

别忘了把android写入文件和读取文件的权限开了。

代码

	CCSize size = CCDirector::sharedDirector()->getWinSize();    
  
	CCRenderTexture* pScreen = CCRenderTexture::create(size.width,size.height, kCCTexture2DPixelFormat_RGBA8888);    
  
    CCScene* pCurScene = CCDirector::sharedDirector()->getRunningScene();    
 
	pScreen->begin();    
  
	pCurScene->visit();    
   
	pScreen->end();    
	int id = spritewith->getTag() ;

	char temp[20];	
	sprintf(temp,"gril%d.jpg",id);
	pScreen->saveToFile(temp, kCCImageFormatJPEG);
	CC_SAFE_DELETE(pScreen);   

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
	JniMethodInfo methodInfo;
	bool isHave = JniHelper::getStaticMethodInfo(methodInfo,
		"cn/partygame/sexyair/SexyAir",//需要调用的Java文件
		"share",//调用的方法名
		"(I)V");//参数
	if(isHave){         
		jint ji = id ;
		methodInfo.env->CallStaticVoidMethod(methodInfo.classID, methodInfo.methodID,id);
		//CCLog("ok");
	}else{
		//CCLog("the showMessage method is not exits");
	}  
#endif

需要的头文件

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "platform\android\jni\JniHelper.h"
#endif


在eclipse,包名.java文件下面添加如下代码:
java代码

public static void share(final int id){     try {    StringBuilder builder = new StringBuilder();    builder.append("gril").append(id).append(".jpg");    String s = builder.toString();    File[] files = getContext().getFilesDir().listFiles();    File share = null;    for (int i = 0; i < files.length; i++)    {     File file = files[i];     if (file.getName().endsWith(s)) {      share = file;      break;     }    }        if (share == null)     return;

   InputStream is = new FileInputStream(share);       //String path = Environment.getExternalStorageDirectory().getPath() +s;    String localPath=Environment.getExternalStorageDirectory().getAbsolutePath() + "/image";    File f=new File(localPath);         if(!f.exists())         {             f.mkdir();         }          String path = localPath + "/" + s;       FileOutputStream os = new FileOutputStream(path);       byte[] buffer = new byte[1024];    int count = 0;    while ((count = is.read(buffer)) > 0) {     os.write(buffer, 0, count);    }    is.close();        os.close();      } catch (Exception e) {       }  } }


这样就点击按钮就可以响应截图以及保存到本地文件夹下面。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值