1

我有我的bitmapI want to convert my bitmap to save as image in another new file by below code.

注意:它在除 Galaxy S3 之外的所有设备上都能正常工作。任何人都可以帮助我使此代码在 S3 中可用。我总是在转换为新文件时得到这个 Toast。任何人都知道可能会发生什么问题。

Bitmap photo = (Bitmap) extras.get("data");

                selectedImagePath = String.valueOf(System.currentTimeMillis())
                        + ".jpg";

                Log.i("TAG", "new selectedImagePath before file "
                        + selectedImagePath);

                File file = new File(Environment.getExternalStorageDirectory(),
                        selectedImagePath);

                try {
                    file.createNewFile();
                    FileOutputStream fos = new FileOutputStream(file);
                    photo.compress(Bitmap.CompressFormat.PNG, 95, fos);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    Toast.makeText(this,
                            "Sorry, Camera Crashed-Please Report as Crash A.",
                            Toast.LENGTH_LONG).show();
                }

提前致谢。

4

1 回答 1

2

存储可能未处于要写入的状态,发生这种情况的原因有很多。您应该getExternalStorageState在访问外部存储之前进行检查。即使它没有在其他设备上发生,它也可能发生,所以最好提防它。

如果外部存储是,并且您的问题仍然存在,您可以通过添加到您的或日志来查看MEDIA_MOUNTED导致异常的原因,从而更好地处理正在发生的事情。e.getMessage()Toast

您似乎还使用顶级目录来存储文件。这不会导致技术问题,但最好为您的应用程序创建一个子目录并在其中存储文件。从getExternalStorageDirectory文档——

应用程序不应该直接使用这个顶级目录,以免污染用户的根命名空间。

于 2013-01-29T14:29:20.093 回答