2014-09-25 4 views
0

프로그래밍 방식으로 adb 명령을 사용하여 장치 화면의 스크린 샷을 캡처하는 android에서 캡처 화면 캡처 앱을 만들려고합니다. 스택 오버플로 및 다른 사이트의 모든 링크를 시도했지만 많은 성공을 거두지는 못했습니다. 어떤 시체라도 나를 여기에서 도울 수 있니? 나는이 링크 Android take screenshot on rooted device .raw 파일을 만들려고했지만 지금은 안드로이드에서 원시 파일을 이미지로 변환하는 방법에 집착하고있다.프로그래밍 방식으로 .root 파일을 android routed 장치의 이미지 파일로 변환하는 방법

답변

1

Android는 그 자체로는 불가능합니다. 외부 디코더가 필요합니다. 디코딩, 디모 자이 킹, 화이트 밸런스 등을 할 수 있고 RGB로 변환 할 수있는 라이브러리가 있습니다. 이것은 디지털 네거티브이며 안드로이드에서 볼 수 있기 전에 많은 이미지 처리가 필요합니다.

모든 종류의 RAW 파일을 디코딩 할 수있는 라이브러리 인 dcraw를 확인하십시오.

+0

회신 해 주셔서 감사합니다하지만 난 원시 파일의 바이트 배열을 사용하여 비트 맵 공장을 통해 변환했습니다 –

1

원시 이미지 파일은 다음 U는

File ss = new File(ssDir, "ss.jpg"); 

에, JPG 또는 PNG로

File ss = new File(ssDir, "ss.raw"); 

변경이 extentention을 변경할 수 있지만 캡처 스크린 샷은 SU 권한을

을 실행하려면 루트 권한을 이 필요한 경우
File f = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "screeshot.jpg"); 
Process localProcess = Runtime.getRuntime().exec("su"); 
OutputStream os = localProcess .getOutputStream(); 
//DataOutputStream dos = (DataOutputStream) localProcess.getOutputStream(); 
os.write(("/system/bin/screencap -p " + f.toString()).getBytes("ASCII")); 
//dos.writeBytes("exit\n"); 
os.flush(); 
os.close(); 
localProcess .waitFor(); 
+0

os.writeBytes는 OutputStream에 존재하지 않으며 장치에 루트 권한이 있습니다.이 코드는 단지 검은 색 이미지를 저장하고 아무것도 저장하지 않고 단지 이미지를 생성하고 스크린 샷을 생성하고 간단하게 확장명을 변경하면됩니다. 이미지를 생성합니다.이 명령을/dev/graphics/fb0을 원시 형식의 framebuffer를 저장하기 위해 사용하고 있기 때문에 원시 바이트 파일을 이미지 파일로 변환하는 코드 나 라이브러리가 필요합니다. –

+1

이 코드는 내 kitkat에서 완벽하게 작동하지만 나도 몰라요. 당신은 귀하의 logcat 문제를 확인하고 매니 페스트에 쓰기 externel 저장 권한을 추가해야합니다 – Sumit

+0

나는 안드로이드 2.3.5 에서이 코드를 테스트하고 있지만 작동하는지 알려 드리겠습니다 –