Как взять, обрезать и поделиться скриншотом? - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть код, который нужно взять, сохранить, а затем поделиться скриншотом Activity. Моя проблема в том, что я хочу просто взять центр деятельности, поэтому я добавляю этот код

private  Bitmap cropBitmap(Bitmap bitmap)  {
            Bitmap bm = Bitmap.createBitmap(bitmap, 10, 10,  500,  500);
            return bm;
        }

Но это все еще оригинальный скриншот, пожалуйста, помогите мне попробовать много решений, но кажется, что я не знаю, как применять эти решения, потому что я очень любитель в коде. Поэтому я надеюсь помочь мне, пожалуйста, дайте мне правильное решение в зависимости от моего кода. Большое спасибо

    @Override
    public void onClick(View v) {
        Bitmap bitmap = takeScreenshot();
        cropBitmap(bitmap);
        saveBitmap(bitmap);
        shareIt();
    }


    public Bitmap takeScreenshot() {
        View v1 = getWindow().getDecorView().getRootView();
        v1.setDrawingCacheEnabled(true);
        Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);
        return bitmap;
    }

    private  Bitmap cropBitmap(Bitmap bitmap)  {
        Bitmap bm = Bitmap.createBitmap(bitmap, 10, 10,  500,  500);
        return bm;
    }

    private void saveBitmap(Bitmap bitmap) {
        imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png"); ////File imagePath
        FileOutputStream fos;
        try {
            fos = new FileOutputStream(imagePath);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            Log.e("GREC", e.getMessage(), e);
        } catch (IOException e) {
            Log.e("GREC", e.getMessage(), e);
        }


    }

    private void shareIt() {
        Uri myUri = Uri.fromFile(imagePath);
        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        sharingIntent.setType("image/*");
        sharingIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        String shareBody = "My highest score with screen shot";
        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "My Catch score");
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
        sharingIntent.putExtra(Intent.EXTRA_STREAM, myUri);

        startActivity(Intent.createChooser(sharingIntent, "Share via"));
    }
});


    displayResults();

1 Ответ

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

Попробуй так:

Bitmap bitmap = takeScreenshot();
Bitmap bitmapCropped = cropBitmap(bitmap);
saveBitmap(bitmapCropped );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...