我刚完成我的照片应用程序使用“相机”类相关工具。 但是我无法在默认的Android相册应用中看到我的捕捉照片。 这是我从Camera.takePicture回调的代码段:
PictureCallback jpegPictureCallback = new PictureCallback() {
@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
Bitmap bmp = BitmapFactory.decodeByteArray(arg0, 0, arg0.length);
String fileName = Environment.getExternalStorageDirectory()
.toString()
+ File.separator
+ "DCIM"
+ File.separator
+ "Camera"
+ File.separator
+ "PicTest_" + System.currentTimeMillis() + ".jpg";
File file = new File(fileName);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdir();
}
try {
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(file));
bmp.compress(Bitmap.CompressFormat.JPEG, 80, bos);
bos.flush();
bos.close();
Toast.makeText(MainPage.this, "Picture work " + fileName + "!",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
Toast.makeText(MainPage.this, "Picture Failed" + e.toString(),
Toast.LENGTH_LONG).show();
}
};
};
请提出任何想法,谢谢。
答案 0 :(得分:1)
使用MediaScannerConnection
告诉MediaStore
索引您的照片。
另外,请使用getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
,而不是您正在使用的硬编码子目录。
另外,不是将byte[]
解码为Bitmap
,而是将其重新编码为byte[]
,您可以考虑只保存byte[]
。
另外,在主应用程序线程AFAIK上调用onPictureTaken()
;请进行图像处理并在后台线程中保存到磁盘。