【问题标题】:Save picture captured in Internal Storage?保存在内部存储中捕获的​​图片?
【发布时间】:2013-03-17 18:59:18
【问题描述】:

我编码拍照并将其保存在外部存储中。它在我的带有 sd 卡的平板电脑上运行良好。但是,我的手机不支持 sd 卡时遇到了一些问题。谁能帮我写代码来保存在内部存储中。谢谢!

    ((Button) findViewById(R.id.btnTaken))
            .setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                            takeImage();                            
                }
                });



protected void takeImage() {
     Log.i(TAG,"onClick event");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
        String currentDateandTime = sdf.format(new Date());
        String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() +
                               "/Image_" + currentDateandTime + ".jpg";


        mCamera.takePicture(fileName);
        Toast.makeText(this, fileName + " saved", Toast.LENGTH_SHORT).show();


}
public void takePicture(final String fileName) {
    Log.i(TAG, "Tacking picture");
    PictureCallback callback = new PictureCallback() {

        private String mPictureFileName = fileName;

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            Log.i(TAG, "Saving a bitmap to file");
            Bitmap picture = BitmapFactory.decodeByteArray(data, 0, data.length);
            try {
                FileOutputStream out = new FileOutputStream(mPictureFileName);
                picture.compress(Bitmap.CompressFormat.JPEG, 90, out);
                picture.recycle();
                mCamera.startPreview();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };

    Camera.ShutterCallback shutter = new Camera.ShutterCallback() {
         public void onShutter() {
         Log.e(getClass().getSimpleName(), "SHUTTER CALLBACK");
         }
         };
         Camera.PictureCallback raw = new Camera.PictureCallback() {
             public void onPictureTaken(byte[] data, Camera c) {
              Log.e(getClass().getSimpleName(), "PICTURE CALLBACK RAW: " + data);
              mCamera.startPreview();
             }
             };
    mCamera.takePicture(shutter, raw, callback) ;



}

【问题讨论】:

标签: android android-camera android-image


【解决方案1】:

这很简单..而不是外部文件路径名..您应该提供内部文件路径名..这是FileOutputStream out = new FileOutputStream(new File(getFilesDir()+File.separator+"MyFile.jpg"));..请尝试一下..它工作得很好

还有一件事,你应该在Android Manifest.xml文件中添加内部存储的权限

<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>

【讨论】:

  • 该权限不存在,OutputStream 不是文件名。
  • 我也知道输出流。这是一个基本的事情。从那个“输出”变量中,您可以写入数据。你知道在 OutPutStream 中写入数据吗???
猜你喜欢
  • 1970-01-01
  • 2017-12-11
  • 2014-05-16
  • 2014-09-22
  • 1970-01-01
  • 2014-11-03
  • 2015-09-07
  • 2019-09-21
  • 1970-01-01
相关资源
最近更新 更多