android - Soalan tentang kaedah intent.putExtra(MediaStore.EXTRA_OUTPUT, uri)
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 13:32:33
0
2
1108

Mengapa fungsi kaedah ini untuk menentukan alamat output mengambil gambar? Prototaip kaedah ini ialah

public Intent putExtra(String name, Parcelable value)

Bukankah ini bermakna menyimpan data dalam bentuk pasangan nilai kunci? Mengapa anda boleh menentukan alamat output imej?
Berikut adalah kod lengkap Tujuan utama adalah untuk mengklik Butang untuk memasuki antara muka foto, dan kemudian menyimpan foto yang diambil ke direktori yang dikaitkan dengan aplikasi, saya tidak faham cara menyimpan foto kepada uri yang dinyatakan oleh saya.

public class MainActivity extends AppCompatActivity
{

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

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button takePhoto= (Button) findViewById(R.id.take_photo);
        picture= (ImageView) findViewById(R.id.pircture);
        takePhoto.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //创建File对象,用于存储拍照后的图片
                File outputImage = new File(getExternalCacheDir(),"output_image.jpg");
                if(outputImage.exists())
                {
                    outputImage.delete();
                    try
                    {
                        outputImage.createNewFile();
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }

                if (Build.VERSION.SDK_INT>=24)
                {
                    imageUri = FileProvider.getUriForFile(MainActivity.this,"com.studio.cameraalbumtest.fileprovider",outputImage);
                }
                else
                {
                    imageUri = Uri.fromFile(outputImage);
                }

                //启动相机程序
                Intent intent=new Intent("android.media.action.IMAGE_CAPTURE");
                intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
                startActivityForResult(intent,TAKE_PHOTO);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        switch (requestCode)
        {
            case TAKE_PHOTO:
            {
                if(resultCode == RESULT_OK)
                {
                    //将拍摄的照片显示出来
                    try
                    {
                        Bitmap bitmap= BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
                        picture.setImageBitmap(bitmap);
                    }
                    catch (FileNotFoundException e)
                    {
                        e.printStackTrace();
                    }
                }
            }
            break;
        }
    }
}
过去多啦不再A梦
过去多啦不再A梦

membalas semua(2)
習慣沉默
if (Build.VERSION.SDK_INT>=24)
                {
                    imageUri = FileProvider.getUriForFile(MainActivity.this,"com.studio.cameraalbumtest.fileprovider",outputImage);
                }
                else
                {
                    imageUri = Uri.fromFile(outputImage);
                }

Bukankah ini tempat anda menentukan lokasi simpan gambar?

巴扎黑

putExtra digunakan untuk lulus parameter saya rasa penulis tidak faham tujuan sebenar Intent

Dengan memanggil kaedah intent.putExtra(String name, Parcelable value), anda melepasi laluan gambar yang anda ingin simpan Selepas membuka kamera, klik butang foto, dan sistem akan menyimpan gambar mengikut alamat yang anda disediakan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan