Heim > Fragen und Antworten > Hauptteil
Warum besteht die Funktion dieser Methode darin, die Ausgabeadresse beim Aufnehmen von Bildern anzugeben? Der Prototyp dieser Methode ist
public Intent putExtra(String name, Parcelable value)
Bedeutet das nicht, dass Daten in Form von Schlüssel-Wert-Paaren gespeichert werden? Warum können Sie die Ausgabeadresse des Bildes angeben?
Das Folgende ist der vollständige Code. Der Hauptzweck besteht darin, auf die Schaltfläche zu klicken, um die Fotoaufnahmeoberfläche aufzurufen und das aufgenommene Foto dann im mit der Anwendung verknüpften Verzeichnis zu speichern. Während des Lernvorgangs habe ich jedoch nicht verstanden, wie um das Foto unter der von mir angegebenen URI zu speichern.
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;
}
}
}
習慣沉默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);
}
这里不就指定了 图片的保存位置吗
巴扎黑2017-05-16 13:34:33
putExtra 是用来传递参数的,我想作者是没有理解Intent 的真实用途
通过调用 intent.putExtra(String name, Parcelable value) 这个方法,是传递你要保存的图片的路径,打开相机后,点击拍照按钮,系统就会根据你提供的地址进行保存图片