如何使用FB Android API将LibGDX屏幕截图分享到Facebook?



我想使用 Facebook Android SDK 将 libGDX 屏幕共享到 Facebook。我的代码是:

安卓启动器.java

if (!fbLoggedin()) fbLogin();
SharePhotoContent content = new SharePhotoContent.Builder()
.addPhoto(new SharePhoto.Builder()
.setBitmap(Utils.takeScreenShot(graphics.getView()))
.build())
.setShareHashtag(new ShareHashtag.Builder()
.setHashtag("#enibo")
.build())
.build();
shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);

实用工具.java

class Utils {
...
public Bitmap takeScreenShot(View view) {
view.setDrawingCacheEnabled(true);
view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW);
view.buildDrawingCache();
if(view.getDrawingCache() == null) return null;
Bitmap snapshot = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
view.destroyDrawingCache();
return snapshot;
}
}

但我只在Facebook分享对话框中看到一张黑色图像。如何解决此问题?

我曾经做过这样的事情。这是我使用的代码片段。

定义视图

screenshot = (CardView) findViewById(R.id.screenshot);
screenshot.setDrawingCacheEnabled(true);
screenshot.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);

采用此方法创建视图的位图

public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getMeasuredWidth(),v.getMeasuredHeight() , Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;
}

然后保存到存储并使用它(参见 URI(

try {
loadBitmapFromView(screenshot)
.compress(Bitmap.CompressFormat.JPEG,
100,
new FileOutputStream("/storage/emulated/0/image.jpg"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Uri uri = Uri.fromFile(new File("/storage/emulated/0/image.jpg"));

最新更新