1

私は私のbitmapI want to convert my bitmap to save as image in another new file by below code.

注: Galaxy S3 を除くすべてのデバイスで問題なく動作します。このコードを S3 で実行可能にするのを手伝ってくれる人はいますか? 新しいファイルに変換している間、私は常にこのトーストを取得します。誰でも問題が発生する可能性があることを知っています。

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 に答える