在我的应用程序中,我需要在用户按下摄像机视图时保存摄像机的图像。到目前为止一切顺利,我遵循官方教程:http://developer.android.com/guide/topics/media/camera.html并且一切正常,除非我尝试在回调中保存图片。实际上,我在try / catch块中没有出错,但我的文件无处可寻。
我在mannifest中添加了正确的权限:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在我的回调中,我有:
private PictureCallback mPicture = new PictureCallback()
{
public void onPictureTaken(byte[] data, Camera camera)
{
Log.d("tag", "Je rentre bien dans la callback");
//File pictureFile = media.getOutputMediaFile( MediaFile.MEDIA_TYPE_IMAGE );
File pictureFile = new File( Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "temp.png");
if (pictureFile == null)
{
Log.d("tag", "Error creating media file, check storage permissions ");
return;
}
try
{
FileOutputStream fos = new FileOutputStream( pictureFile );
Log.d("tag", "Fichier créer : " + pictureFile.getAbsolutePath() );
fos.write(data);
fos.close();
}
catch (FileNotFoundException e)
{
Log.d("tag", "File not found " + pictureFile.getAbsolutePath()
+ " Readable : " + pictureFile.canRead()
+ " Writeable : " + pictureFile.canWrite()
+ " Exist : " + pictureFile.exists() );
}
catch (IOException e)
{
Log.d("tag", "Error accessing file");
}
}
我的日志文件显示我的:
04-03 10:29:28.950: D/tag(15087): Je rentre bien dans la callback
04-03 10:29:28.960: D/tag(15087): Fichier créer : /mnt/sdcard/Pictures/temp.png
我检查平板电脑中的SD卡,但就像我说的那样,文件无处可寻。我研究了我的问题,但我还没有找到任何有用的东西。 我没有看到我的代码有什么问题或缺少什么。
我希望有人可以帮助我。
答案 0 :(得分:2)
你可以这样尝试
System.gc();
String fileName = System.currentTimeMillis()+".jpg"; //you can give any name to your image file
String mPathImage = Environment.getExternalStorageDirectory()+ "/" + fileName;
File file = new File(mPathImage);
Uri outputFileUri = Uri.fromFile( file );
Intent mIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
mIntent.putExtra( MediaStore.EXTRA_OUTPUT, outputFileUri );
startActivityForResult(mIntent, 1);
答案 1 :(得分:0)
尝试这件事。
File path = new File(Environment.getExternalStorageDirectory()+ getResources().getString(R.string.QRCode_Path));
path.mkdirs();
主要是path.mkdirs();
即使没有创建也会创建一个文件夹,然后保存文件。