2012-08-31 4 views
2

으로 나는 다음과 같은 코드를 사용하여 현재 배경 화면을 얻고있다 :는 사용 현재 바탕 화면은 라이브 배경 화면 배경

final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
    final Drawable wallpaperDrawable = wallpaperManager.getDrawable(); 

어떻게이에서 비트 맵을 만들 수 있습니까? 나는 입술 폴더에서 비트 맵을 만들 때와 같은

나는이

Resources res = getApplicationContext().getResources(); 
    b = BitmapFactory.decodeResource(res, R.drawable.wall); 

은 무엇 코드 내가 너무 내 캔버스에 그리는 나의 라이브 배경 화면으로 사용할 수있는 비트 맵으로 현재 배경 화면을 얻기 위해 사용한다 사용 배경?

답변

4

가져온 Drawable은 실제로는 BitmapDrawable이어야합니다. 필요한 경우 instanceof을 사용하여이를 확인할 수 있습니다.

사건 인 것은, 당신이해야 할 모든 것을 :

final Drawable wallpaperDrawable = wallpaperManager.getDrawable(); 
final Bitmap wallpaperBitmap = ((BitmapDrawable) wallpaperDrawable).getBitmap(); 

편집이 : 그것은 DrawableBitmapDrawable 불가능한 것으로 판명되는 경우, 당신은 발견 (변환하기 위해 다음과 같은 방법을 사용할 수 있습니다 André-this answer에서, 신용) : 이것은 나를 위해 일한

public static Bitmap drawableToBitmap(Drawable drawable) { 
    if (drawable instanceof BitmapDrawable) { 
     return ((BitmapDrawable)drawable).getBitmap(); 
    } 

    Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); 
    drawable.draw(canvas); 

    return bitmap; 
} 
+0

감사합니다 :) – Badal

관련 문제