Android 捕获的图像未显示在gallery中,但已成功存储在SD卡中
我是android开发新手,我正在使用Android 捕获的图像未显示在gallery中,但已成功存储在SD卡中,android,image,android-gallery,android-mediascanner,Android,Image,Android Gallery,Android Mediascanner,我是android开发新手,我正在使用UVCCamera开发一个小型应用程序来捕获USB Camrea图像 我用UVCCamera拍摄了图像,并像这样存储在SD卡中 File filepath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "IMG_"+getDateTime() + ".jpg"); mCameraClient.captureStill(filepath
UVCCamera
开发一个小型应用程序来捕获USB Camrea图像
我用UVCCamera
拍摄了图像,并像这样存储在SD卡中
File filepath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "IMG_"+getDateTime() + ".jpg");
mCameraClient.captureStill(filepath.toString());
在这里,mCameraClient将使用UVC摄像头捕获图像并存储在该路径中,它将在捕获完成后回调方法
@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.
}
});
}
};
然后我从图像按钮调用galleryonClickListener
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小时的时间,它出现在图库中。
我想知道为什么会发生这种情况?
谢谢您必须插入媒体库并为其创建缩略图。否则,在media gallery进行扫描之前(通常计划为每两小时扫描一次新图像),您将无法在gallery中看到它们 使用以下命令创建媒体库的条目和缩略图
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\u path是保存的图像文件的路径
希望这对你有帮助 您必须将新图像通知媒体扫描仪。参考@HarishSridharan:我已经试过了,但没有成功