如何仅在Android中保存从App内部存储器中的相机捕获的图像和视频?

时间:2013-04-22 05:59:20

标签: android video-capture android-gallery android-image

我正在开展一个项目,我只需要在应用程序内存中保存图像和视频(不在SD卡或设备库中)。我正在使用下面的代码。但这也将图像/视频保存到设备库。请指教。

Bitmap bm;
        View v=imageview;
        v.setDrawingCacheEnabled(true);
        bm=Bitmap.createBitmap(v.getDrawingCache());
        v.setDrawingCacheEnabled(false);
        String fileName="image.png";        
        try 
        {
            FileOutputStream fOut=openFileOutput(fileName, MODE_PRIVATE);
            bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);

        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }   

我希望将图片和视频设为私密且安全。所以我想将它们保存在应用内部存储器中。所以没有其他应用可以访问它。请建议。

2 个答案:

答案 0 :(得分:3)

将图像存储在内存中,它会将图像存储在内部图像文件夹中。

                    Uri uriSavedImage;

                // the temp folder to start the camera activity with
                    String fileName = "image_" + String.valueOf(imageNum)+ ".png";
                    path = getDir("images", Context.MODE_WORLD_WRITEABLE).getPath() + "/" + fileName;
                    // start the camera activity
                    file = new File(path);
                    while (file.exists()) {
                        imageNum++;
                        fileName = "image_" + String.valueOf(imageNum)+ ".png";     
                        path = getDir("images_pho",Context.MODE_WORLD_WRITEABLE).getPath()+ "/" + fileName;
                        file = new File(path);
                    }
                    Uri ur = Uri.parse(file.toString());
                    uriSavedImage = Uri.fromFile(file);

            Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);

            OutputStream imageFileOS;
            try {
                imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
                imageFileOS.write(data);
                imageFileOS.flush();
                imageFileOS.close();

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

希望它的帮助

答案 1 :(得分:0)

正如我告诉你的那样,你可以将从相机拍摄的照片存储在内部存储器中,然后立即用getContentResolver().delete(uri, null, null);从库中删除拍摄的图像,或者你可以使用它:

if (takenpicturefile.exists())
        if (takenpicturefile.delete())
            Log.d("tag","filedeleted");

有关详细信息,您可能需要参考this。希望它有所帮助。