(网上赌博新址) 关于方法intent.putExtra(MediaStore.EXTRA_OUTPUT, uri)的问题
澳门博彩导航网址
澳门博彩导航网址
当前位置 : 澳门博彩导航网址 > 网上赌博新址

(网上赌博新址) 关于方法intent.putExtra(MediaStore.EXTRA_OUTPUT, uri)的问题

这个方法起到的作用为什么是指定拍照的输出地址?这个方法的原型是

public Intent putExtraString name, Parcelable value

这个意思不是将数据以键值对的形式存储吗?为什么可以指定图片的输出地址呢?
下面是完整的代码,主要目的就是点击Button进入拍照的界面,然后将拍照得到的图片存到应用关联目录下,但是学习过程中我没弄懂如何将图片保存到我指定的uri下。

public class MainActivity extends AppCompatActivity
{

    public static final int TAKE_PHOTO = 1;
    private ImageView picture;
    private Uri imageUri;

    @Override
    protected void onCreateBundle savedInstanceState
    {
        super.onCreatesavedInstanceState;
        setContentViewR.layout.activity_main;
        Button takePhoto= Button findViewByIdR.id.take_photo;
        picture= ImageView findViewByIdR.id.pircture;
        takePhoto.setOnClickListenernew View.OnClickListener
        {
            @Override
            public void onClickView v
            {
                //创建File对象,用于存储拍照后的图片
                File outputImage = new FilegetExternalCacheDir,"output_image.jpg";
                ifoutputImage.exists
                {
                    outputImage.delete;
                    try
                    {
                        outputImage.createNewFile;
                    }
                    catch IOException e
                    {
                        e.printStackTrace;
                    }
                }

                if Build.VERSION.SDK_INT>=24
                {
                    imageUri = FileProvider.getUriForFileMainActivity.this,"com.studio.cameraalbumtest.fileprovider",outputImage;
                }
                else
                {
                    imageUri = Uri.fromFileoutputImage;
                }

                //启动相机程序
                Intent intent=new Intent"android.media.action.IMAGE_CAPTURE";
                intent.putExtraMediaStore.EXTRA_OUTPUT,imageUri;
                startActivityForResultintent,TAKE_PHOTO;
            }
        };
    }

    @Override
    protected void onActivityResultint requestCode, int resultCode, Intent data
    {
        switch requestCode
        {
            case TAKE_PHOTO:
            {
                ifresultCode == RESULT_OK
                {
                    //将拍摄的照片显示出来
                    try
                    {
                        Bitmap bitmap= BitmapFactory.decodeStreamgetContentResolver.openInputStreamimageUri;
                        picture.setImageBitmapbitmap;
                    }
                    catch FileNotFoundException e
                    {
                        e.printStackTrace;
                    }
                }
            }
            break;
        }
    }
}
if Build.VERSION.SDK_INT>=24
                {
                    imageUri = FileProvider.getUriForFileMainActivity.this,"com.studio.cameraalbumtest.fileprovider",outputImage;
                }
                else
                {
                    imageUri = Uri.fromFileoutputImage;
                }

这里不就指定了 图片的保存位置吗

putExtra 是用来传递参数的,我想作者是没有理解Intent 的真实用途

通过调用 intent.putExtraString name, Parcelable value 这个方法,是传递你要保存的图片的路径,打开相机后,点击拍照按钮,系统就会根据你提供的地址进行保存图片

栏目列表

广告位

澳门博彩导航网址