Как поделиться скриншотом LibGDX в Facebook, используя FB Android API? - PullRequest
0 голосов
/ 30 сентября 2018

Я хочу поделиться экраном libGDX с Facebook, используя Facebook Android SDK.Мой код:

AndroidLauncher.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);

Utils.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.Как я могу исправить эту проблему?

1 Ответ

0 голосов
/ 30 сентября 2018

Однажды я сделал что-то подобное.Вот фрагменты кода, которые я использовал.

Определите представление

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"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...