Java 如何在android中拍照并替换图像

Java 如何在android中拍照并替换图像,java,android,Java,Android,我有一个浮动操作按钮(FAB),当我按下FAB时,它将出现在对话框布局中。如何拍摄图片,然后用单击按钮文本名称“shot”时拍摄的图片替换ImageView 这里是我的FAB活动_store.xml: <RelativeLayout android:layout_width="match_parent" android:layout_height="91dp" android:layout_below="@+id/listviewLayout

我有一个浮动操作按钮(FAB),当我按下FAB时,它将出现在对话框布局中。如何拍摄图片,然后用单击按钮文本名称“shot”时拍摄的图片替换ImageView

这里是我的FAB活动_store.xml:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="91dp"
        android:layout_below="@+id/listviewLayout">

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/fabAdd"
            android:layout_width="77dp"
            android:layout_height="91dp"
            android:layout_alignParentRight="true"
            android:backgroundTint="@color/white"
            android:src="@drawable/ic_plus"
            app:elevation="6dp"
            app:fabSize="normal"
            android:layout_marginRight="20dp"
            android:onClick="addStock"/>
    </RelativeLayout>
抱歉英语不好。

打开相机

 Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 startActivityForResult(cameraIntent, PICK_FROM_CAMERA);
添加权限

<uses-permission android:name="android.permission.CAMERA" />


然后从ActivityResult上获取数据,并将其设置为imageView,首先您必须在清单中使用相机权限

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera"
              android:required="true" />
然后在onActivityResult中处理数据并设置为图像视图

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        imageView.setImageBitmap(imageBitmap);
    }
}
你可以在这里找到更多信息
我希望能帮上忙

我可以把打开的摄像头代码放在哪里?在public void addStock内?@pohongems,如果您想从alertDialog打开它。。所以把openCamera放在alertDialog的正面按钮中
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera"
              android:required="true" />
int REQUEST_IMAGE_CAPTURE=2001 

 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        imageView.setImageBitmap(imageBitmap);
    }
}