0

カメラアプリを作っていて、撮った写真を内部ストレージに保存したいと思っていました。アプリだけでなく、撮影したすべての写真にユーザーがアクセスできるようにしたいと考えています。android で File クラスを使うべきではないと思います。なにか提案を?

4

1 に答える 1

0

onClickでcapturePicture():を呼び出し、コードの下にコピーして貼り付けます

private void capturePicture()
    {
        if (isCameraPresent())
        {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            fileUri = Uri.fromFile(getOutputMediaFile());
            intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
            startActivityForResult(intent, Global.CAMERA_CAPTURE_REQUEST_CODE);
        }
    }

    private File getOutputMediaFile()
    {
        // External sdcard location
        File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                Global.IMAGE_DIRECTORY_NAME);
        // Global.IMAGE_DIRECTORY_NAME is String in Global value is abc/images
        // Create the storage directory if it does not exist
        if (!mediaStorageDir.exists())
        {
            if (!mediaStorageDir.mkdirs())
            {
                Log.d(Global.IMAGE_DIRECTORY_NAME, "Oops! Failed create " + Global.IMAGE_DIRECTORY_NAME + " directory");
                return null;
            }
        }
        File mediaFile = new File(mediaStorageDir.getPath() + File.separator + "CAPTURE" + ".jpg");


        return mediaFile;
    }

    private boolean isCameraPresent()
    {
        if (getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA))
            return true;// this device has a camera
        else
            return false;// no camera on this device
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (requestCode == Global.CAMERA_CAPTURE_REQUEST_CODE)
        {
            if (resultCode == RESULT_OK)
            {
                // Image is saved into internal pictures folder >> abc folder>>Images
            }
            else
            {
                // failed to capture image
                Toast.makeText(getApplicationContext(), "Sorry! Failed to capture image", Toast.LENGTH_SHORT).show();
            }
        }
    }

これにより、キャプチャした画像が内部ストレージ/Pictures/abc/images に保存されます

これがあなたが望むものであり、これがあなたを助けることを願っています:)

于 2014-11-29T06:31:36.900 に答える