마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

서비스내에서 전체 화면 캡쳐방법

0 추천

플로팅 팝업을 서비스로 띄워 플로팅 팝업이 아닌 전체화면을 캡쳐하는 기능을 만들고 싶습니다.MediaProjection을 사용하면 21버전이후로 사용이 가능하니.. 

그것보다 낮은 버전에서도 캡쳐가 가능하도록 구현을 하고싶어서 MediaProjection으로 하는 방법은 배제하고 생각합니다.

//캡쳐버튼클릭
public void mOnCapture(){
   //전체화면
   View rootView = getWindow().getDecorView();

   File screenShot = ScreenShot(rootView);
   if(screenShot!=null){
      //갤러리에 추가
      sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(screenShot)));
   }
}

//화면 캡쳐하기
public File ScreenShot(View view){
   view.setDrawingCacheEnabled(true);  //화면에 뿌릴때 캐시를 사용하게 한다

   Bitmap screenBitmap = view.getDrawingCache();   //캐시를 비트맵으로 변환

   String filename = "screenshot.png";
   File file = new File(Environment.getExternalStorageDirectory()+"/Pictures", filename);  //Pictures폴더 screenshot.png 파일
   FileOutputStream os = null;
   try{
      os = new FileOutputStream(file);
      screenBitmap.compress(Bitmap.CompressFormat.PNG, 90, os);   //비트맵을 PNG파일로 변환
      os.close();
   }catch (IOException e){
      e.printStackTrace();
      return null;
   }

   view.setDrawingCacheEnabled(false);
   return file;
}

이런 방법으로 구현을 하고싶은데 

View rootView = getWindow().getDecorView();

전체화면을 어떻게 지정을 해야하나요 ? 

서비스로 플로팅을 띄우니 getWindow()를 가져오지 못합니다.

 

 

now882002 (3,860 포인트) 님이 2018년 1월 31일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...