플로팅 팝업을 서비스로 띄워 플로팅 팝업이 아닌 전체화면을 캡쳐하는 기능을 만들고 싶습니다.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()를 가져오지 못합니다.