cari

Rumah  >  Soal Jawab  >  teks badan

android - Soalan tentang kaedah intent.putExtra(MediaStore.EXTRA_OUTPUT, uri)

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梦2780 hari yang lalu1112

membalas semua(2)saya akan balas

  • 習慣沉默

    習慣沉默2017-05-16 13:34:33

    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?

    balas
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:34:33

    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

    balas
    0
  • Batalbalas