2014-03-06 60 views
0
void SaveScreenshot() 
{ 
    CCSize size = CCDirector::sharedDirector()->getWinSize(); 
    CCRenderTexture* texture = CCRenderTexture::create((int)size.width, (int)size.height);  
    texture->setPosition(ccp(size.width/2, size.height/2));  
    texture->begin(); 
    CCDirector::sharedDirector()->getRunningScene()->visit(); 
    texture->end(); 
    texture->saveToFile("screenshot.png", kCCImageFormatPNG); 
} 

如何在Android上使用原生Java訪問屏幕截圖?
我想爲發送意圖創建一個選擇器,但我似乎無法找到cocos2dx saveToFile()寫入..幫助的目錄?保存截圖cocos2d-x android

+0

你能說說你的問題嗎? –

+0

設置斷點,然後進入保存方法 – LearnCocos2D

+0

@SumitKandoi saveToFile()寫入的目錄是什麼? – GameDevGuru

回答

3

你需要調用java方法來創建你的屏幕截圖。

public static void ScreenShot() 
    { 
     Bitmap imageBitmap = BitmapFactory.decodeFile(Cocos2dxHelper.getCocos2dxWritablePath() + "/" + "screenshot.png"); 

     String fileHolder = "SampleFolder"; 
     File filepathData = new File("/sdcard/" + fileHolder); 

     //~~~Create Dir 
     try { 
       if (!filepathData.exists()) 
       { 
        filepathData.mkdirs(); 
        filepathData.createNewFile(); 

        FileWriter fw = new FileWriter(filepathData + fileHolder); 
        BufferedWriter out = new BufferedWriter(fw); 
        String toSave = String.valueOf(0); 
        out.write(toSave); 
        out.close(); 
       } 
      } 
      catch (IOException e1) { 

      } 

      //~~~Create Image 
      File file = new File("/sdcard/" + "Your filename"); 

      try 
      { 
       file.createNewFile(); 
       FileOutputStream ostream = new FileOutputStream(file); 
       imageBitmap.compress(CompressFormat.PNG, 100, ostream); 
       ostream.close(); 
      } 
      catch (Exception e) {} 

      Uri phototUri = Uri.fromFile(file); 
      Intent shareIntent = new Intent(); 
      shareIntent.setAction(Intent.ACTION_SEND); 
      shareIntent.putExtra(Intent.EXTRA_STREAM, phototUri); 
      //~~~Add Code Below 
    } 
+0

這看起來很有前途,但filepathData是一個只讀文件系統'java.io.IOException:只讀文件系統' – GameDevGuru

+0

@GameDevGuru sd卡wripe權限是否存在? –