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로 스크린샷을 구현해 보셨거나 조언 주실 수 있으신지요?
다른 방법은 일단 배제하고 이 방법만 질문드리겠습니다.