Android 如何在phone';s画廊?
这是我的第一篇文章。如果有任何错误,请纠正我:) 我在Gallery的特定文件夹中显示图像(通过我的应用程序捕获)时遇到问题。我已成功将其保存在我的应用程序文件夹中的目录中,但当我进入gallery时,它不会显示我的应用程序文件夹(首次创建时)和捕获的图像,除非我重新启动我的手机 我在安卓4.4.4上运行,据我所知,这似乎是一个bug 无论如何,我的代码如下:Android 如何在phone';s画廊?,android,android-4.4-kitkat,android-gallery,android-mediascanner,Android,Android 4.4 Kitkat,Android Gallery,Android Mediascanner,这是我的第一篇文章。如果有任何错误,请纠正我:) 我在Gallery的特定文件夹中显示图像(通过我的应用程序捕获)时遇到问题。我已成功将其保存在我的应用程序文件夹中的目录中,但当我进入gallery时,它不会显示我的应用程序文件夹(首次创建时)和捕获的图像,除非我重新启动我的手机 我在安卓4.4.4上运行,据我所知,这似乎是一个bug 无论如何,我的代码如下: private void savePic() { dir_path = "TravelBuddy"; t
private void savePic() {
dir_path = "TravelBuddy";
travelBuddyDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), dir_path);
timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
imgName = (timeStamp + ".jpg");
output = null;
File imagePath = new File(travelBuddyDir, imgName);
try {
output = new FileOutputStream(imagePath);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, output);
output.flush();
output.close();
MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), bmp,
imgName, imgName);
} catch (Exception e) {
e.printStackTrace();
}
}
在下面的onActivityResult(int requestCode、int resultCode、Intent data)方法中调用上述方法:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case 1: {
if (resultCode == RESULT_OK) {
savePic();
}
break;
}
这是我在保存捕获的图像之前检查和创建目录的方法:(结果路径:/storage/emulated/0/Pictures/TravelBuddy)
我对这整件事(捕获、存储等)都是新手,已经尝试了好几天了。非常感谢您的帮助。提前谢谢你 你怎么启动照相机的?还有,您是如何尝试显示它的?您是否尝试通过文件管理器检查图像是否真的保存到了正确的文件夹?@Divers我正在通过intent启动。我正在尝试将其显示为缩略图,就像库中其他文件夹中的图像一样。既然您提到了它,使用ES文件资源管理器,在主页上,我可以通过选择图像或内部存储访问该文件夹,两者都返回了两个不同的路径/前者为存储/模拟/0/Pictures/TravelBuddy,后者为/sdcard/Pictures。其中假定/sdcard指的是/0。我不知道您是否可以在“/storage/simulated/0/Pictures/TravelBuddy”文件夹中看到图像,但在“switch”中的“onActivityResult”方法中,您将结果代码与请求代码混淆了,这似乎是一个问题。@Divers感谢您发现了这个错误!是的,我可以在“/storage/simulated/0/Pictures/TravelBuddy”中看到图像。在我纠正了上面的错误后,两个图像同时保存到目录中:1。拍摄的正确图像和2。空的。“多媒体资料”中显示的缩略图是空图像。我是不是遗漏了什么?P.s MediaScanner正在工作。
private void checkDir() {
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
dir_path = "TravelBuddy";
travelBuddyDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), dir_path);
if (!travelBuddyDir.exists() && (!travelBuddyDir.isDirectory())) {
travelBuddyDir.mkdir();
System.out.println("New directory has been created");
} else {
System.out.println("Directory already exists!");
}
} else {
System.out.println("No storage available");
}
}