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

adb shell screencap 을 자바 소스로 테스트 했을 때 문제가 생깁니다.

0 추천
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View arg0) {
    screenshot();
   }
  });
 }
    
    public void screenshot() {
    try {
     String cmd = "screencap -p /sdcard/" + System.currentTimeMillis() + ".jpg";
     Process process = Runtime.getRuntime().exec(cmd);
     BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));

     String line = "";
     while((line = br.readLine()) != null) {
      Log.e("Main", line);
     }
    } catch (Exception e) {         
     e.fillInStackTrace();
     Log.e("Process Manage", "Unable to execute command screencap", e);
    }
 }
}

 

adb shell 명령어 중 현재 화면을 캡쳐하는 screencap -p를 안드로이드 소스로 작성하여 테스트를 진행중에 있습니다.
 
헌데, 이미지 용량이 0kb에 해상도도 -1 x -1로 나오는 기이한 현상을 보입니다.
sdk안의 adb로는 기기의 현재 화면이 잘 캡쳐되어 저장되지만 이상하게 위의 코드로 돌렸을 때만 이미지가 나오질 않네요...
 
혹시 위의 작업을 할 때 루팅이 필요한가요?
sdk의 adb에서 권한 없이 되는 것 보면 일반 앱에서도 될 것 같은데 안되네요
 
혹시 screencap -p로 스크린샷을 구현해 보셨거나 조언 주실 수 있으신지요?
다른 방법은 일단 배제하고 이 방법만 질문드리겠습니다.
익명사용자 님이 2014년 6월 18일 질문

1개의 답변

0 추천
 
채택된 답변
adb shell은 일반앱보다 권한을 더 많이 가지고 있습니다.

일반앱이 스크린 캡쳐를 못하게 하는 것은 보안상 당연한 것으로 보입니다.
익명사용자 님이 2014년 6월 18일 답변
그렇군요... 감사합니다..
...