2012-07-02 2 views
0

다음은 코드의 발췌 부분입니다. 컴파일 할 수 있지만 프로그램이 전화/에뮬레이터에서 충돌합니다.스크린 샷을 캡처하여 소셜 미디어와 공유하십시오.

Bitmap bitmap; 
    View v1 = MyView.getRootView(); 
    v1.setDrawingCacheEnabled(true); 
    bitmap = Bitmap.createBitmap(v1.getDrawingCache()); 
    v1.setDrawingCacheEnabled(false); 

    String path = Images.Media.insertImage(getContentResolver(), bitmap, 
      "title", null); 
    Uri screenshotUri = Uri.parse(path); 

    final Intent socialIntent = new Intent(Intent.ACTION_SEND); 
    socialIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 

    socialIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri); 
    socialIntent.setType("image/png"); 

누구나 어떻게 해야할지 알고 계십니까? 스크린 샷을 캡처하여 사용자가 좋아하면 공유하도록하겠습니다. 그 밖의 모든 작업은 내가 얻을 수없는 스크린 샷 일뿐입니다.

+1

오류 로그 게시 ... –

답변

0

캡쳐 화면을 얻을 수있는 유일한 방법은 커널 수준에있는 프레임 버퍼에 직접 액세스하는 것입니다.이 작업을 수행하려면 루트 액세스가 필요하며 여기에서 데이터를 가져 와서 그래픽 자체가 화면입니다.

이 작업을 위해서는 modded ROM이 필요하며 이렇게하려면 루트 권한이 필요합니다. 소니, 알아요. ROM에 수정이있을 때 뿌리가 없도록하는 시설이 있습니다. 전원 메뉴에는 'Take Screenshot'옵션이 있습니다. CM은 루트를 필요로하는 또 다른 것입니다.

프로그래밍 가능한 API가있는 ICS에서 사용할 수있는 기능이 있습니다 (answer 참조). 이전 버전에서는 운이 좋지 않습니다.

+0

정답은 있지만이 코드의 의도와 관련이 없습니다. 대신이 코드는 앱의 자체 뷰 계층 구조를 비트 맵 (즉, "스크린 샷"자체)으로 작성하려고 시도하고 있습니다. 그 일이 가능하다면 가능합니다. –

관련 문제