无法将Screen Capture插入MediaStore - LIBGDX

时间:2015-06-04 22:09:00

标签: java android-activity libgdx mediastore

我使用以下功能捕捉屏幕。这一切都有效,因为我之后可以在Gallery中看到图像,但是当我尝试将保存的图像插入MediaStore时,得到 FileNotFoundException 错误:

public static String saveScreenshotNamePath(String name){
    try{
        FileHandle fh;
        fh = Gdx.files.external(name + ".png");
        Pixmap pixmap = getScreenshot(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false);
        PixmapIO.writePNG(fh, pixmap);
        pixmap.dispose();
        return fh.file().getAbsolutePath();
    }catch (Exception e){
        return "";
    }        
}

我想使用bellow函数将该图片加载到 MediaStore ,但我得到 FileNotFoundException (我在Android中有WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限):

public void shareGoogleImage(int no_level, String path) {
    File tmpFile = new File(path);
    do{
        try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); }
    } while(!tmpFile.exists());
    String photoUri = "";

    try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); }

    try {
        photoUri = MediaStore.Images.Media.insertImage(getContentResolver(), tmpFile.getAbsolutePath(), null, null); 
    } catch (FileNotFoundException e1) { e1.printStackTrace(); }

    try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }

    Intent share = new PlusShare.Builder(this)
        .setText("See my latest Game Level " + Integer.toString(no_level) + " score")
        .setType("image/png")
        .setStream(Uri.parse(photoUri))
        .getIntent()
        .setPackage("com.google.android.apps.plus");
    startActivityForResult(share, 0);
}

这就是我使用上述功能的方法:

String pathto_screencap = ScreenshotFactory.saveScreenshotNamePath("google_share_image");
my_game.google_facebook_services.shareGoogleImage(hud_display.level_no, pathto_screencap);

这是Logcat:

06-05 01:01:14.624: E/MediaStore(31555): Failed to insert image
06-05 01:01:14.624: E/MediaStore(31555): java.io.FileNotFoundException: No such file or directory
06-05 01:01:14.624: E/MediaStore(31555):    at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
06-05 01:01:14.624: E/MediaStore(31555):    at android.content.ContentProviderProxy.openAssetFile(ContentProviderNative.java:611)
06-05 01:01:14.624: E/MediaStore(31555):    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:925)
06-05 01:01:14.624: E/MediaStore(31555):    at android.content.ContentResolver.openOutputStream(ContentResolver.java:672)
06-05 01:01:14.624: E/MediaStore(31555):    at android.content.ContentResolver.openOutputStream(ContentResolver.java:648)
06-05 01:01:14.624: E/MediaStore(31555):    at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:923)
06-05 01:01:14.624: E/MediaStore(31555):    at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:846)
06-05 01:01:14.624: E/MediaStore(31555):    at com.mygame.android.AndroidLauncher.shareGoogleImage(AndroidLauncher.java:443)
06-05 01:01:14.624: E/MediaStore(31555):    at com.mygame.game._ex01MyGame.render(_ex01MyGame.java:1021)
06-05 01:01:14.624: E/MediaStore(31555):    at com.badlogic.gdx.Game.render(Game.java:46)

0 个答案:

没有答案
相关问题