프로그래밍 방식으로 adb 명령을 사용하여 장치 화면의 스크린 샷을 캡처하는 android에서 캡처 화면 캡처 앱을 만들려고합니다. 스택 오버플로 및 다른 사이트의 모든 링크를 시도했지만 많은 성공을 거두지는 못했습니다. 어떤 시체라도 나를 여기에서 도울 수 있니? 나는이 링크 Android take screenshot on rooted device .raw 파일을 만들려고했지만 지금은 안드로이드에서 원시 파일을 이미지로 변환하는 방법에 집착하고있다.프로그래밍 방식으로 .root 파일을 android routed 장치의 이미지 파일로 변환하는 방법
답변
Android는 그 자체로는 불가능합니다. 외부 디코더가 필요합니다. 디코딩, 디모 자이 킹, 화이트 밸런스 등을 할 수 있고 RGB로 변환 할 수있는 라이브러리가 있습니다. 이것은 디지털 네거티브이며 안드로이드에서 볼 수 있기 전에 많은 이미지 처리가 필요합니다.
모든 종류의 RAW 파일을 디코딩 할 수있는 라이브러리 인 dcraw를 확인하십시오.
원시 이미지 파일은 다음 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();
os.writeBytes는 OutputStream에 존재하지 않으며 장치에 루트 권한이 있습니다.이 코드는 단지 검은 색 이미지를 저장하고 아무것도 저장하지 않고 단지 이미지를 생성하고 스크린 샷을 생성하고 간단하게 확장명을 변경하면됩니다. 이미지를 생성합니다.이 명령을/dev/graphics/fb0을 원시 형식의 framebuffer를 저장하기 위해 사용하고 있기 때문에 원시 바이트 파일을 이미지 파일로 변환하는 코드 나 라이브러리가 필요합니다. –
이 코드는 내 kitkat에서 완벽하게 작동하지만 나도 몰라요. 당신은 귀하의 logcat 문제를 확인하고 매니 페스트에 쓰기 externel 저장 권한을 추가해야합니다 – Sumit
나는 안드로이드 2.3.5 에서이 코드를 테스트하고 있지만 작동하는지 알려 드리겠습니다 –
회신 해 주셔서 감사합니다하지만 난 원시 파일의 바이트 배열을 사용하여 비트 맵 공장을 통해 변환했습니다 –