이 링크 (How to programmatically take a screenshot in Android?)에 따르면이 대답을 캡처하여 장치의 외부 메모리에 저장했습니다.화면 캡처 파일이 저장되지 않음
나는 모든 권한을 지우고 로그에 따라 파일이 전혀 비어 있지 않습니다. 그러나 갤러리 나 파일 탐색기에서 파일을 찾을 수 없습니다.
왜 이런 일이 발생합니까? 누군가가 나를 도와 줄 수 있습니까?
이 링크 (How to programmatically take a screenshot in Android?)에 따르면이 대답을 캡처하여 장치의 외부 메모리에 저장했습니다.화면 캡처 파일이 저장되지 않음
나는 모든 권한을 지우고 로그에 따라 파일이 전혀 비어 있지 않습니다. 그러나 갤러리 나 파일 탐색기에서 파일을 찾을 수 없습니다.
왜 이런 일이 발생합니까? 누군가가 나를 도와 줄 수 있습니까?
Rotwang에 관해서, 나는 문제가 무엇인지 알았다.
getExternalStorageDirectory()의 경로가 저장 될 파일의 유효한 디렉토리를 반환하지 않는 것으로 나타났습니다.
내 경우에는 사용자가 갤러리를 볼 때 스크린 샷을 저장하는 것이 었습니다.
그래서 Environment.getExternalStoragePublicDirectory ( Environment.DIRECTORY_PICTURES); 대신.
그래서 화면 캡처를 저장하는 전체 코드는 다음과 같습니다.
private void takeScreenshot() {
Date now = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
try {
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File file = new File(path, now + ".jpg");
path.mkdirs();
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
//File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(file);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
MediaScannerConnection.scanFile(this,
new String[] { file.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.e("ExternalStorage", "Scanned " + path + ":");
Log.e("ExternalStorage", "-> uri=" + uri);
}
});
} catch (Throwable e) {
Log.e("Error", "Exception on TakeScreenshot", e);
}
}
다시 고맙습니다.
당신을 진심으로 환영합니다. –
해당 코드 ('String mPath = Environment.getExternalStorageDirectory(). toString() + "/"+ now + ".jpg";')에 따르면 갤러리에 저장하지 않고 ** 외부 저장. 이 메소드의 이름에 속지 마십시오. [getExternalStorageDirectory()] (https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()). –
그러나 아래 코드는 캡처 한 이미지를 해당 디렉토리의 파일에 저장하는 것으로 보입니다. 그것을 그 디렉토리에 저장하지 않겠습니까? – March3April4
** 외부 ** 스토리지에 저장하지 마세요. 저의 previos 코멘트에 링크 된 공식 문서를 읽어주십시오. –