2012-01-23 3 views
0

Android의 기본 배경 화면에 맞춤 배경 화면을 추가하려고합니다. 에뮬레이터 (2.3.3 가상 장치)를 사용하여 /system/app/Launcher2.apk에서 찾았습니다. 나는 APK를 꺼내 apktool로 해독하고, 배경 화면 폴더 안에 배경 화면을 추가 한 다음, apktool로 APK를 다시 기록했다. 하지만 새 APK를 에뮬레이터로 푸시 할 수 없습니다.Android에서 바탕 화면 삽입

에뮬레이터를 켜고 시스템 터미널에서 "adb remount"를 사용하여 파일 시스템을 쓰기 가능으로 만들고 "adb push"를 사용하여 파일을 푸시하지만 "copy to : copy not : directory not empty" 오류. 나는이 오류가 무엇인지 모르겠지만, 유일한 해결책은 소스에서 안드로이드를 재 컴파일 할 수 있음을 두려워

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

를하고 잔인한 될 수있다 : 나는 "ADB 설치"를 사용하려고하면,이 얻을 내가하고 싶은 일을 위해서.

기본 배경 화면과 사용자 배경 화면이 다르게 취급되는 것 같아서 시스템 자체에 배경 무늬를 삽입하려고하는 유일한 이유가 있습니다. 나는 바닥에 구름이있는 맑은 하늘의이 아주 간단한 벽지를 가지고있다. 그것은 상단에 어두운 파란색과 하단에 밝은 파란색으로 주로 파란색 그라디언트입니다. 기본 바탕 화면 세트와 매우 유사한 이미지가 잘 표시되지만, 바탕 화면으로 이미지를 설정하려고하면 기본 이미지가 보이지 않지만 눈에 띄는 색상 줄무늬가 생깁니다.

APK에서 기본 배경 무늬를 가져 와서 DCIM 폴더의 일반 그림과 같이 에뮬레이터로 밀어 넣으려고했는데 사용자 정의 배경 무늬로 설정할 때 그 모양이 아주 마음에 들지 않는 것으로 나타났습니다. 기본적으로 다른 이미지와 마찬가지로 먼저 잘라내야하지만 전체 이미지를 선택하면 기본 배경 무늬가 실제로 잘리는 것을 알았지 만 배경 무늬를 설정할 때 기본 선택만큼 많이 들지는 않는다는 것을 깨달았습니다. . 즉, 기본 배경 화면을 선택할 때 실제로 표시되는 내용은 SD 카드에 동일한 이미지를 넣고 배경 화면으로 직접 선택할 때 표시되는 것보다 작습니다.

Android가 바탕 화면과 함께 작동하는 방식을 이해하려고합니다. 이미지가 잘못되었거나 Android의 실제 문제 일뿐 아니라 어떻게 든이를 속일 필요가 있는지 확인하려고합니다. 원본 이미지는 800x480 JPG이며, 비율에 따라 다시 축소되고 김프로 480x320으로 잘립니다 (240x320 화면이있는 장치를 의미 함). 내 컴퓨터에서 이미지가 잘 표시됩니다.

original image 원본 이미지 내가 비교를 위해 기본 설정에서 배경 화면은 640 × 480이다

공지 사항을 사용하는 기본 설정에서

resized image 크기가 조정 된 이미지

Wallpaper from the default set 배경 화면. 내 이미지를 640x480로 재사용해도 작동하지 않았습니다.

저는 이것이 실제로 하나가 아닌 두 가지 질문이지만, 제 문제를 설명하는 가장 좋은 방법은 확실치 않다는 것을 알고 있습니다. 이해 주셔서 감사합니다.

+1

아마도 [this] (http://stackoverflow.com/questions/1964193/android-how-to-set-the-wallpaper-image) question might help? 아니요, 기존 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 카드의 파일 (일반적으로 카메라/갤러리 앱)은 실제로 getWallpaperDesiredMinimumWidth()getWallpaperDesiredMinimumHeight() API 호출에서 반환 된 값을 기반으로 이미지를 특정 출력 해상도로 제한하는 스톡 CropImage 활동을 거쳤을 때 SD 카드의 이미지가 다소 다운 샘플링 되었기 때문에 실제로 발생합니다.CropImage 경우에, 그들이 WallpaperManager.setBitmap() 통해 설정되는 동안 실행기 포함

것들은 직접적으로 다운 샘플링 된 메모리에 전달 자원의 전체 크기의 비트 맵 파일을 전달 WallpaperManager.setResource()를 호출하여 설정된 비트 맵 객체.

WallpaperManager.setStream() API를 사용하는 앱을 사용하는 경우 (CropImage를 연기하는 대신) SD 카드에서 파일을 선택한 후 API를 사용하는 것과 동일한 배경 화면 품질을 얻는 것으로 보입니다 런처에있는 것들.

ICS에서 CropImage 활동이 BitmapRegionDecoder (다른 것들 중에서도)를 사용하도록 개정되어 이전 제한이 더 이상 적용되지 않을 수 있습니다.

+0

대단히 감사합니다. 이것은 엄청난 도움이됩니다. – ziritrion