-2

カメラで撮影した写真をアプリからデバイスのギャラリーに保存するにはどうすればよいですか?

問題は、写真を撮った後にアプリが現在クラッシュし、指定されたディレクトリに1つの画像しか保存できないことです。ファイルを保存した後に何をすべきかわからないため、アプリがクラッシュしていると思い込んでいますか?この問題を修正するにはどうすればよいでしょうか。returnステートメントの後は「到達不能コード」です。

コード:

public class Activity_Camera extends Activity implements View.OnClickListener {

        public static final int cameraData = 1;

        ImageButton ib;
        ImageView iv;
        Intent i;
        Bitmap bmp;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_camera);
                initialise();
        }

        private void initialise() {
                iv = (ImageView) findViewById(R.id.ivPicReturn);
                ib = (ImageButton) findViewById(R.id.ibTakePic);

                ib.setOnClickListener(this);
        }

        public void onClick(View v) {
                switch (v.getId()) {
                case R.id.ibTakePic:
                        i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                        //
                        i.putExtra(MediaStore.EXTRA_OUTPUT, getOutputMediaFileUri());              
                        //
                        startActivityForResult(i, cameraData);
                        break;
                }
        }
        //
        private Uri getOutputMediaFileUri() {
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "DCIM/TradeIt");
            imagesFolder.mkdirs();  
            File image = new File(imagesFolder, "image.jpg");
            Uri uriSavedImage = Uri.fromFile(image);
            return uriSavedImage;


        }
        //
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                if (resultCode == RESULT_OK) {
                        Bundle extras = data.getExtras();
                        bmp = (Bitmap) extras.get("data");
                        iv.setImageBitmap(bmp);


                }

        }

}

logcat

W/dalvikvm(919): threadid=1: thread exiting with uncaught exception (group=0x41d7d930) 
03-07 00:00:24.704: E/AndroidRuntime(919): FATAL EXCEPTION: main 
03-07 00:00:24.704: E/AndroidRuntime(919): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.hyperlocal.tradeit/com.hyperlocal.tradeit.Activity_Camera}: java.lang.NullPointerException 
03-07 00:00:24.704: E/AndroidRuntime(919): at android.app.ActivityThread.deliverResults(ActivityThread.java:3319)
4

1 に答える 1

1

変数をインクリメントして保存し、ファイル名に追加して、URIを取得したときにさらに写真を作成し、写真をギャラリーに表示するには、次のようにします。

   sendBroadcast(new Intent(
                Intent.ACTION_MEDIA_MOUNTED,
                Uri.parse("file://" +    Environment.getExternalStorageDirectory())));

写真を撮った後にこのようなブロードキャストを送信しない場合、次に電話がオンになるまでギャラリーは更新されません

于 2013-03-07T00:10:12.257 に答える