【问题标题】:setWallpaper(bitmap) doesn't set fullscreen wallpaper?setWallpaper(bitmap) 不设置全屏壁纸?
【发布时间】:2014-09-05 07:29:58
【问题描述】:

所以我正在尝试创建一个应用程序,用户可以在其中按下一个按钮用手机的相机拍摄一张照片,然后按下另一个按钮将该图像设置为手机的壁纸。

我用这个来启动相机意图:(这是在 onClick 方法中)

Intent i;

i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i, cameraResults);

然后我实现了这个方法来接收来自相机的图像:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == RESULT_OK){
        Bundle extras = data.getExtras();
        bmp = (Bitmap) extras.get("data");
        imageView.setImageBitmap(bmp);
    }
}

然后,在将壁纸设置为bmp的按钮的onClick方法中,我使用了:

getApplicationContext().setWallpaper(bmp);

当我运行这个应用程序时,一切似乎都运行良好!拍照,我设置了一个imageView作为图片,然后当我按下按钮将图像设置为我的壁纸时,我的壁纸改变了。

但是,问题是来自相机的图像没有正确设置为壁纸。由于某种原因,图片尺寸减小,因此只有壁纸的中间是该图像。大部分屏幕是黑色的。由于某种原因,图像被缩小了。我希望图片是全屏的,但是现在它被最小化了,而且背景是黑色的。

有人知道这是为什么吗?我正在关注一个教程视频,教程中的人让它完美地工作(图像设置为全屏壁纸)。

感谢大家的帮助,非常感谢!

还有其他人知道我可以如何缩放它以便将壁纸设置为全屏吗?

【问题讨论】:

  • 大多数相机,或者至少我的 htc droid 不可思议的相机背面都有一个 8mp 相机,如果你不这样做,查看一张全尺寸照片所需的内存量是巨大的t scale 你可以用完内存的地方。您需要正确地预先缩放它,这样操作系统就不会为您做这件事了
  • @L7ColWinters 是的,我正在测试的手机是 Galaxy s2,所以它确实有一个 8mp 游戏。好的,所以我有点明白你在说什么。全屏图片会占用太多内存,因此它使用的是包含较少数据的小图片。那么如何以编程方式解决这个问题呢?缩小位图所需的代码是什么?感谢您的回复。

标签: java android android-intent


【解决方案1】:

您提取的位图是图像的缩略图。 尝试 this Android official tutorial 使用本机相机应用程序和图像缩放。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多