Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从捕获中获取图像,并使用android中的另一个活动在另一个版面中显示图像_Android_Android Camera - Fatal编程技术网

从捕获中获取图像,并使用android中的另一个活动在另一个版面中显示图像

从捕获中获取图像,并使用android中的另一个活动在另一个版面中显示图像,android,android-camera,Android,Android Camera,我想通过单击第一个活动中的“捕获”按钮显示捕获后的图像,并使用第二个活动在第二个活动(布局)中显示图像 第一个活动 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); Button take_photo = (Button) findViewById(R.id.btn_c

我想通过单击第一个活动中的“捕获”按钮显示捕获后的图像,并使用第二个活动在第二个活动(布局)中显示图像

第一个活动

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);

    Button take_photo = (Button) findViewById(R.id.btn_capture);
    take_photo.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                startActivity(i);
            }
        });
}
首先布局活动

> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/btn_capture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="21dp"
        android:text="Capture" />

</RelativeLayout>
活动秒

> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/view_photo"
        android:layout_width="260dp"
        android:layout_height="374dp" />

</LinearLayout>
>

获取存储的映像的路径,并将其作为额外的使用意图传递给onActivityResult()中的其他活动。 希望这能对你有所帮助

public void onClick(View v) 
    {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);                    
    mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),
                                       "image" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
    try 
        {                       
            startActivityForResult(intent, PICK_FROM_CAMERA);
        } 
    catch (ActivityNotFoundException e) 
        {
            e.printStackTrace();
        }
    }

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        if (resultCode != RESULT_OK) return;       
        switch (requestCode) 
            {
                case PICK_FROM_CAMERA:
                    Bitmap photo =  null;           
                    Bundle extras = data.getExtras();
                    if (extras != null) 
                    {               
                        photo = extras.getParcelable("data");
                    }   
                    Intent i =  new Intent(this,SecondActivity.class);
                    i.putExtra("image", photo);
                    startActivity(i);
                    break;  
    }
在第二项活动中:

    bMap =  getIntent().getParcelableExtra("image");
    mImageView.setImageBitmap(bMap);
使用startActivityForResult()代替startActivity()

下一步在下一个活动中尝试使用此

protected void onCreate(Bundle savedInstanceState) {
    //TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    //intialize the image view 

    Bitmap bitmap  = getIntent().getExtras().getParcelable("name");
    //set the image here.
}

希望这可以帮助您

您可以使用以下代码来解决这些问题:

您的第一项活动:

private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        Button take_photo = (Button) findViewById(R.id.btn_capture);
        take_photo.setOnClickListener(new OnClickListener() 
        {
            public void onClick(View v) 
            {
                // create Intent to take a picture and return control to the calling application
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                // start the image capture Intent
                startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) 
        {
            Bitmap imageData = null;
            if (resultCode == RESULT_OK) 
            {
                imageData = (Bitmap) data.getExtras().get("data");

                Intent i = new Intent(this, SecondActivity.class);
                i.putExtra("name", imageData );
                startActivity(i);

            } 
            else if (resultCode == RESULT_CANCELED) 
            {
                // User cancelled the image capture
            } 
            else 
            {
                // Image capture failed, advise user
            }
        }
    }
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Bitmap bitmap  = getIntent().getExtras().getParcelable("name");
        ImageView view = (ImageView) findViewById(R.id.view_photo);
        view.setImageBitmap(bitmap); 
    }
第二项活动:

private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        Button take_photo = (Button) findViewById(R.id.btn_capture);
        take_photo.setOnClickListener(new OnClickListener() 
        {
            public void onClick(View v) 
            {
                // create Intent to take a picture and return control to the calling application
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                // start the image capture Intent
                startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) 
        {
            Bitmap imageData = null;
            if (resultCode == RESULT_OK) 
            {
                imageData = (Bitmap) data.getExtras().get("data");

                Intent i = new Intent(this, SecondActivity.class);
                i.putExtra("name", imageData );
                startActivity(i);

            } 
            else if (resultCode == RESULT_CANCELED) 
            {
                // User cancelled the image capture
            } 
            else 
            {
                // Image capture failed, advise user
            }
        }
    }
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Bitmap bitmap  = getIntent().getExtras().getParcelable("name");
        ImageView view = (ImageView) findViewById(R.id.view_photo);
        view.setImageBitmap(bitmap); 
    }
并在Manifest.xml文件中使用以下权限:

<uses-feature android:name="android.hardware.camera" />


我希望这能在我使用的menifest中很好地工作

,阅读这篇文章哦,先生,我不知道如何接受,因为我只知道如何完整地询问我上面的代码?两周前我试图找到解决办法,但我做不到。你能完成这个项目吗?非常感谢您找到了我们建议的相同解决方案吗?哦,现在已经完成了,我使用@Febi M Felix编码。提前谢谢,很抱歉给你添麻烦,你走得更近了,呃。。。在我捕获后,它不会保存到我的SD卡中。是的,三星Galaxy Tab 2 10.1和使用android 4.0.3的仿真器它不知道这个摄像头图片请求,但我尝试了这个“私人静态最终整型摄像头图片请求=0;”在第二个活动“view.setImageBitmap(位图);”中它打开相机并在拍摄后停留在第一个活动中,在第二个活动中不显示图像您是否使用startActivityForResult(意图、相机图片请求);在第一个activity.private final int CAMERA_PIC_REQUEST=1;够了。我们不需要使用static.use startActivityforResult(i,somerequestcode)代替startActivity(i);当我们调用startActivityforresult()时,相机应用程序将启动并转到onactivityforresult()。我使用start public void onClick(视图v){Intent I=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);startActivityforresult(I,相机图片_请求);}但在捕获之后。应用程序说,令人难忘的是,摄像头已停止。请在清单文件中声明新活动并再次检查。但它无法保存到我的SD卡。你能回答这个问题吗