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;
}
}
}
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