Установить изображение в качестве обоев после обрезки без увеличения

Я новичок в программировании Android, и я создаю приложение, содержащее функцию обрезки. Я пытаюсь установить изображение в качестве обоев после обрезки, изображение становится увеличенным. Вот мой код, который работает, кроме проблемы масштабирования:

if (checkPermissionforcrop()) {
            try {
                Uri imgUri = Uri.parse(url);
                CropIntent = new Intent("com.android.camera.action.CROP");
                CropIntent.setDataAndType(imgUri, "image/*");
                CropIntent.putExtra("crop", "true");
                CropIntent.putExtra("outputX", 180);
                CropIntent.putExtra("outputY", 180);
                CropIntent.putExtra("aspectX", 3);
                CropIntent.putExtra("aspectY", 4);
                CropIntent.putExtra("noFaceDetection", true);
                CropIntent.putExtra("scale", true);
                CropIntent.putExtra("return-data", true);
                CropIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
                CropIntent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.name());
                startActivityForResult(CropIntent, 1);
            } catch (ActivityNotFoundException e) {
                String errorMessage = "Whoops - your device doesn't support the crop action!";
                Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT).show();
            }
        } else
            requestPermissionforcrop();


/**/
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == PIC_CROP)
            if (data == null) {
            } else {
                String filePath = f.getPath();
                BitmapFactory.Options options = new BitmapFactory.Options();
                Bitmap bitmap = BitmapFactory.decodeFile(filePath);
                DisplayMetrics metrics = new DisplayMetrics();
                getWindowManager().getDefaultDisplay().getMetrics(metrics);
                try {
                    WallpaperManager.getInstance(getApplicationContext()).setBitmap(bitmap);
                } catch (IOException e) {
                    Toast.makeText(this, "Sorry :/" + e, Toast.LENGTH_SHORT).show();
                }
                Toast.makeText(this, "Done!", Toast.LENGTH_SHORT).show();
            }
        if (requestCode == 0)
            this.finish();
        super.onActivityResult(requestCode, resultCode, data);
    }

0 ответов

Другие вопросы по тегам