捕获的图像未显示在图库中,但已成功存储在 SD 卡中
Captured image was not showing in gallery but it stored successfully in sdcard
我是 android 开发的新手,我正在做一个小应用程序来使用 UVCCamera
捕获 USB Camrea 图像。
我已经使用 UVCCamera
捕获图像并像这样存储在 sdcard 中
File filepath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "IMG_"+getDateTime() + ".jpg");
mCameraClient.captureStill(filepath.toString());
此处 mCameraClient 将调用 UVC Camera 并捕获图像并存储在该路径中,它将回调方法 onCaptureDone
@Override
public void onCaptureDone(final String path) {
// TODO Auto-generated method stub
Log.e(TAG, "onCaptureDone called");
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//Toast -- Images Saved.
}
});
}
};
然后我从图像按钮调用图库 onClickListener
private MediaScannerConnection conn;
File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM));
File[] mImagefile = folder.listFiles(new FilenameFilter() {
public boolean accept(File dir, String filename) {
return filename.endsWith(".jpg");
}
});
if (mImagefile.length > 0) {
SCAN_PATH = folder.toString() + "/"
+ mImagefile[mImagefile.length -1].getName();
Log.e(TAG, "SCAN PATH = " + SCAN_PATH);
if (conn != null) {
conn.disconnect();
}
conn = new MediaScannerConnection(this, this);
conn.connect();
} else {
//Toast -- No Images Available
}
如果筛选成功。
@Override
public void onMediaScannerConnected() {
// TODO Auto-generated method stub
Log.e(TAG, "onMediaScannerConnected");
;
conn.scanFile(SCAN_PATH, null);
}
@Override
public void onScanCompleted(String path, Uri uri) {
// TODO Auto-generated method stub
try {
Log.e(TAG, "OnCompleted path = " + path);
if (uri != null) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);
}
} finally {
Log.e(TAG, "OnCompleted Disconnecting");
conn.disconnect();
conn = null;
}
}
这里我的问题是在图库中所有捕获的图像都没有显示。
并且我检查了保存的目录,所有图像都已成功存储。[图像没有损坏,我已经验证]
并且我检查了默认图库应用程序,因为那些图像也没有显示。
请帮我解决这个问题。
编辑 1:
我观察到一件事,当我捕捉并保存图像时,它没有显示在画廊中,但在 2-3 小时后它出现在画廊中。
我想知道为什么会这样?
谢谢
您必须插入媒体库并为其创建缩略图。否则,直到媒体库进行扫描(通常安排为每两小时扫描一次新图像),您才会在图库中看到它们。
使用以下方法创建条目并创建媒体库缩略图。
String imageFilename = "IMG_";
String originalPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
String path = "";
File filepath = new File(originalPath + imageFilename+".jpg");
mCameraClient.captureStill(filepath.toString());
try {
newPath = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), originalPath, imageFilename, "Captuted Image");
}catch (FileNotFoundException e) {
e.printStackTrace();
}
在抓拍一张图片并保存到sd卡后加入这行代码。
File image_path="your image path";
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(image_path)));
这里image_path是图片文件的保存路径
希望对您有所帮助..!
我是 android 开发的新手,我正在做一个小应用程序来使用 UVCCamera
捕获 USB Camrea 图像。
我已经使用 UVCCamera
捕获图像并像这样存储在 sdcard 中
File filepath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "IMG_"+getDateTime() + ".jpg");
mCameraClient.captureStill(filepath.toString());
此处 mCameraClient 将调用 UVC Camera 并捕获图像并存储在该路径中,它将回调方法 onCaptureDone
@Override
public void onCaptureDone(final String path) {
// TODO Auto-generated method stub
Log.e(TAG, "onCaptureDone called");
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//Toast -- Images Saved.
}
});
}
};
然后我从图像按钮调用图库 onClickListener
private MediaScannerConnection conn;
File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM));
File[] mImagefile = folder.listFiles(new FilenameFilter() {
public boolean accept(File dir, String filename) {
return filename.endsWith(".jpg");
}
});
if (mImagefile.length > 0) {
SCAN_PATH = folder.toString() + "/"
+ mImagefile[mImagefile.length -1].getName();
Log.e(TAG, "SCAN PATH = " + SCAN_PATH);
if (conn != null) {
conn.disconnect();
}
conn = new MediaScannerConnection(this, this);
conn.connect();
} else {
//Toast -- No Images Available
}
如果筛选成功。
@Override
public void onMediaScannerConnected() {
// TODO Auto-generated method stub
Log.e(TAG, "onMediaScannerConnected");
;
conn.scanFile(SCAN_PATH, null);
}
@Override
public void onScanCompleted(String path, Uri uri) {
// TODO Auto-generated method stub
try {
Log.e(TAG, "OnCompleted path = " + path);
if (uri != null) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);
}
} finally {
Log.e(TAG, "OnCompleted Disconnecting");
conn.disconnect();
conn = null;
}
}
这里我的问题是在图库中所有捕获的图像都没有显示。
并且我检查了保存的目录,所有图像都已成功存储。[图像没有损坏,我已经验证]
并且我检查了默认图库应用程序,因为那些图像也没有显示。
请帮我解决这个问题。
编辑 1:
我观察到一件事,当我捕捉并保存图像时,它没有显示在画廊中,但在 2-3 小时后它出现在画廊中。 我想知道为什么会这样?
谢谢
您必须插入媒体库并为其创建缩略图。否则,直到媒体库进行扫描(通常安排为每两小时扫描一次新图像),您才会在图库中看到它们。
使用以下方法创建条目并创建媒体库缩略图。
String imageFilename = "IMG_";
String originalPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
String path = "";
File filepath = new File(originalPath + imageFilename+".jpg");
mCameraClient.captureStill(filepath.toString());
try {
newPath = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), originalPath, imageFilename, "Captuted Image");
}catch (FileNotFoundException e) {
e.printStackTrace();
}
在抓拍一张图片并保存到sd卡后加入这行代码。
File image_path="your image path";
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(image_path)));
这里image_path是图片文件的保存路径
希望对您有所帮助..!