2012-01-23 125 views
0

我正在嘗試將自定義壁紙添加到Android中的默認壁紙集。使用模擬器(2.3.3虛擬設備)我在/system/app/Launcher2.apk中找到它們。我已經拉出APK並用apktool解碼,將壁紙添加到壁紙文件夾中,然後使用apktool重新編碼APK。但是我無法將新的apk文件推送到模擬器。在Android中插入壁紙

在系統終端上,打開模擬器,我使用「adb remount」使文件系統可寫,然後使用「adb push」推送文件,但是我得到「無法複製:目錄不爲空」錯誤。如果我嘗試使用「亞行安裝」,我得到這個:

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

我不知道是什麼錯誤,但恐怕唯一的解決辦法可能是從源代碼重新編譯Android和它可能是矯枉過正爲了我想要做的事情。

唯一的原因,我想插入到牆紙製度本身,因爲它似乎是默認壁紙和壁紙的用戶區別對待。我有這個非常簡單的壁紙,一個晴朗的天空,底部有一片雲;它主要是一個藍色漸變,頂部是深藍色,底部是淺藍色。從默認壁紙集非常相似的圖像顯示得很好,但是當我嘗試將我的圖像設置爲壁紙時,我會看到明顯的顏色條紋,而默認圖像不會。

我嘗試從APK中拉出默認壁紙,然後將它作爲DCIM文件夾中的常規圖片推送到模擬器,當我將其設置爲用戶定義的壁紙時,我注意到它的顯示效果並不像我已經從默認設置中選擇了它:您必須先像其他任何圖像一樣剪裁它,但是在選取整個圖像時,我意識到默認壁紙實際上會被裁剪,但不會像設置壁紙時的默認壁紙那樣多。也就是說,選擇默認壁紙時,顯示的內容實際上比將相同圖像放入SD卡並手動選擇壁紙時顯示的內容要少。

我只是想了解的Android如何與壁紙,看看是否我只是在做一些錯誤的圖像,或者如果它與Android的實際問題和需要「誘騙」不知何故。原始圖像是800x480 JPG,按比例重新縮放,並通過GIMP(適用於具有240x320屏幕的設備)裁剪爲480x320。在我的電腦上,圖像顯示正常。

original image 原圖

resized image 調整後的圖像

Wallpaper from the default set 從我用來進行比較

注意,從默認設置壁紙爲640x480的默認設置壁紙。將我的圖像重新縮放到640x480也無法使用。

我知道這其實是兩個問題,而不僅僅是一個,但我不知道的解釋我的問題的最佳途徑。感謝您的理解。

+1

也許[這](http://stackoverflow.com/questions/1964193/android-how-to-set-the-wallpaper-image)的問題可能會有所幫助?不,你不能修改現有的APK並重新部署它。 –

+1

[android:什麼是INSTALL_PARSE_FAILED_NO_CERTIFICATES錯誤?]的可能重複(http://stackoverflow.com/questions/2914105/android-what-is-install-parse-failed-no-certificates-error) – slayton

+0

謝謝你的APK證書解釋;即使這不是我的實際問題,它將在未來非常有幫助。 – ziritrion

回答

3

在AOSP(薑餅和更早版本)上,Launcher中包含的壁紙(作爲apk中的資源)與用戶可以從SD卡中的文件設置的壁紙之間產生的質量差異(通常通過Camera/Gallery應用程序)實際上是由於來自SD卡的內容在經過庫存CropImage活動時有些下采樣,這會根據從getWallpaperDesiredMinimumWidth()getWallpaperDesiredMinimumHeight() API調用返回的值將圖像限制爲特定的輸出分辨率。

啓動器中包含的啓動器直接使用調用WallpaperManager.setResource(),從資源中傳入完整大小的位圖文件,而在CropImage的情況下,它們通過WallpaperManager.setBitmap()設置,傳入下采樣的內存位圖對象。

看起來,如果您使用(或自己寫)使用WallpaperManager.setStream() API從SD卡中選擇文件(而不是推遲到CropImage)後的應用程序,則應該獲得與使用WallpaperManager.setStream() API相同的壁紙質量結果在啓動器中的那些。

請注意,在ICS上,CropImage活動已被修改爲使用BitmapRegionDecoder(除其他外),以​​便前面的限制可能不再適用。

+0

非常感謝你;這非常有幫助。 – ziritrion