【问题标题】:Inserting wallpapers in Android在 Android 中插入壁纸
【发布时间】:2012-01-24 05:31:42
【问题描述】:

我正在尝试将自定义壁纸添加到 Android 中的默认壁纸集。使用模拟器(2.3.3 虚拟设备),我在 /system/app/Launcher2.apk 中找到了它们。我已经提取了 APK 并使用 apktool 对其进行了解码,在壁纸文件夹中添加了壁纸,然后使用 apktool 再次重新编码了 APK。但我无法将新的 apk 推送到模拟器。

在系统终端上,打开模拟器,我使用“adb remount”使文件系统可写,然后使用“adb push”推送文件,但出现“复制失败:目录非空”错误.如果我尝试使用“adb install”,我会得到:

    1159 KB/s (5598893 bytes in 4.714s)
    pkg: /data/local/tmp/Launcher2.apk
    Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

我不确定错误是什么,但我担心唯一的解决方案可能是从源代码重新编译 Android,这对于我想要做的事情可能有点矫枉过正。

我尝试将壁纸插入系统本身的唯一原因是因为默认壁纸和用户壁纸的处理方式似乎不同。我有这张非常简单的壁纸,天空晴朗,底部有一朵云;它主要是蓝色渐变,顶部为深蓝色,底部为浅蓝色。与默认壁纸集非常相似的图像可以正常显示,但是当我尝试将图像设置为壁纸时,我会看到明显的色带,而默认图像则不会。

我尝试从 APK 中提取默认壁纸,然后将其作为 DCIM 文件夹中的常规图片推送到模拟器,当我将其设置为用户定义的壁纸时,我注意到它的显示不像我had picked it from the default set: you have to crop it first just like any other image, but when picking the whole image I realized that the default wallpapers are actually cropped, but not as much as the default selection when setting up a wallpaper.也就是说,选择默认壁纸时,实际显示的内容比将相同图像放入 SD 卡并手动选择作为壁纸时显示的内容要少。

我只是想了解 Android 如何处理壁纸,看看我是否只是对图像做错了,或者这是否是 Android 的实际问题,需要以某种方式“欺骗”它。原始图像是 800x480 JPG,按比例重新缩放并使用 GIMP 裁剪为 480x320(它适用于具有 240x320 屏幕的设备)。在我的电脑上,图像显示正常。

原图

调整大小的图像

我用于比较的默认设置的壁纸

请注意,默认设置的壁纸是 640x480。将我的图像重新缩放到 640x480 也不起作用。

我知道这实际上是 2 个问题,而不仅仅是一个问题,但我不确定解释我的问题的最佳方式。感谢理解。

【问题讨论】:

标签: android image wallpaper


【解决方案1】:

在 AOSP(Gingerbread 和更早版本)上,Launcher 中包含的壁纸(作为 apk 中的资源)与用户可以从 SD 卡中的文件(通常通过相机/图库)设置的壁纸之间的质量差异app) 实际上是因为 SD 卡中的内容在通过 stock CropImage 活动时会有所下采样,该活动根据 getWallpaperDesiredMinimumWidth()getWallpaperDesiredMinimumHeight() API 调用返回的值将图像限制为特定的输出分辨率.

Launcher 中包含的那些直接使用对WallpaperManager.setResource() 的调用进行设置,从资源中传入全尺寸位图文件,而在 CropImage 情况下,它们通过WallpaperManager.setBitmap() 设置,传入下采样内存中的位图对象。

似乎如果您在从 SD 卡中选择文件(而不是推迟到 CropImage)后使用(或自己编写)使用 WallpaperManager.setStream() API 的应用程序,您应该获得相同的壁纸质量结果作为启动器中的那些。

请注意,在 ICS 上,CropImage 活动已修改为使用 BitmapRegionDecoder(除其他外),因此之前的限制可能不再适用。

【讨论】:

  • 非常感谢;这非常有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
相关资源
最近更新 更多