Pourquoi cette méthode a-t-elle pour fonction de spécifier l'adresse de sortie de la prise de photos ? Le prototype de cette méthode est
public Intent putExtra(String name, Parcelable value)
Cela ne signifie-t-il pas stocker des données sous forme de paires clé-valeur ? Pourquoi pouvez-vous spécifier l'adresse de sortie de l'image ?
Ce qui suit est le code complet. L'objectif principal est de cliquer sur le bouton pour accéder à l'interface de prise de photo, puis de sauvegarder la photo prise dans le répertoire associé à l'application. Cependant, pendant le processus d'apprentissage, je n'ai pas compris comment. pour enregistrer la photo sur l'uri spécifié par moi.
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;
}
}
}
N'est-ce pas ici que vous spécifiez l'emplacement de sauvegarde de l'image ?
putExtra est utilisé pour transmettre des paramètres. Je pense que l'auteur n'a pas compris le véritable objectif d'Intent
.En appelant la méthode intent.putExtra(String name, Parcelable value), vous transmettez le chemin de l'image que vous souhaitez enregistrer. Après avoir ouvert l'appareil photo, cliquez sur le bouton photo et le système enregistrera l'image en fonction de l'adresse que vous avez. fourni