2011-04-29 1 views
0

Android 3.0에는 "Recent Apps"목록에서 사용하기 위해 자동으로 캡쳐 한 스크린 샷이 있습니다. Honeycomb Recent App 자동 스크린 샷 캐시

D/SurfaceFlinger( 133): screenshot: sw=216, sh=135, minZ=0, maxZ=21020 
D/SurfaceFlinger( 133): screenshot: result = OK 

가 파일 시스템에 이러한 이미지

를 캐시 (모든 경우) :이 SurfaceFlinger의는 다음과 같은 로그 출력하고이를 근거로이 스크린 샷을 복용에 대한 책임과 같다? iOS는 응용 프로그램이 백그라운드로 보내질 때 스크린 샷이 자동으로 찍히고 이미지가/private/var/root/Library/Caches/Snapshots에 캐싱되는 비슷한 기능을 가지고 있습니다. 안드로이드에서도 이러한 정보를 유지하는지 알고 싶습니다. 어딘가에 접근 가능한 이미지.

답변

1

이러한 미리보기 이미지는 애플리케이션에서 액세스 할 수 없습니다.

+0

죄송합니다. 파일 시스템 (adb 셸)에 대한 액세스 권한이있는 모든 사람이 액세스 할 수 있어야하며 모든 응용 프로그램에서 반드시 사용해야하는 것은 아닙니다. 나는 그들이 어디에/어떻게 저장되어 있는지보기에 궁금합니다. – cji

0
private void getRecentTaskThumbnails() { 
    if (mBitmaps != null) { 
     mBitmaps.clear(); 
    } else { 
     mBitmaps = new LinkedList<Bitmap>(); 
    } 
    mCurIndex = 0; 

    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 

    List<ActivityManager.RecentTaskInfo> recentTasks = am.getRecentTasks(
      20, ActivityManager.RECENT_IGNORE_UNAVAILABLE); 
    for (ActivityManager.RecentTaskInfo task : recentTasks) { 
     Log.e(TAG, "task:" 
       + task.baseIntent.getComponent().getPackageName() + "=" 
       + task.persistentId); 

     ActivityManager.TaskThumbnails thumbs = am 
       .getTaskThumbnails(task.persistentId); 
     if(thumbs != null && thumbs.mainThumbnail != null) { 
      mBitmaps.add(thumbs.mainThumbnail); 
      Log.e(TAG, "thumbs=" + thumbs + "size="+thumbs.mainThumbnail.getWidth()+","+thumbs.mainThumbnail.getHeight());    
     } 
    } 
}