Android摄像机:数据意图返回空

Android摄像机:数据意图返回空

我有一个Android应用程序,它包含多个活动。

在其中一种情况下,我使用一个按钮来调用设备摄像机:

public void onClick(View view) {
    Intent photoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(photoIntent, IMAGE_CAPTURE);}

在相同的活动中,我称之为OnActivityResult方法获取图像结果:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == IMAGE_CAPTURE) {
        if (resultCode == RESULT_OK) {
            Bitmap image = (Bitmap) data.getExtras().get("data");
            ImageView imageview = (ImageView) findViewById(R.id.pic);
            imageview.setImageBitmap(image);
        } else if (resultCode == RESULT_CANCELED) {
            Toast.makeText(this, "CANCELED ", Toast.LENGTH_LONG).show();
        }
    }}

问题是data为空,而OnActivityResult方法直接转到(resultCode == RESULT_CANCELED)并且应用程序返回到以前的avtivity。

如何解决此问题,并且在调用摄像机之后,应用程序返回到当前活动,其中包含ImageView哪个将包含拍摄的照片?

谢谢



一只甜甜圈
浏览 371回答 3
3回答

陪伴而非守候

我找到了一个简单的答案。起作用了!oprivate&nbsp;void&nbsp;openCameraForResult(int&nbsp;requestCode){ &nbsp;&nbsp;&nbsp;&nbsp;Intent&nbsp;photo&nbsp;=&nbsp;new&nbsp;Intent(MediaStore.ACTION_IMAGE_CAPTURE); &nbsp;&nbsp;&nbsp;&nbsp;Uri&nbsp;uri&nbsp;&nbsp;=&nbsp;Uri.parse("file:///sdcard/photo.jpg"); &nbsp;&nbsp;&nbsp;&nbsp;photo.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,&nbsp;uri); &nbsp;&nbsp;&nbsp;&nbsp;startActivityForResult(photo,requestCode);}if&nbsp;(requestCode&nbsp;==&nbsp;CAMERA_REQUEST_CODE)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(resultCode&nbsp;==&nbsp;Activity.RESULT_OK)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;file&nbsp;=&nbsp;new&nbsp;File(Environment.getExternalStorageDirectory().getPath(),&nbsp;"photo.jpg"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uri&nbsp;uri&nbsp;=&nbsp;Uri.fromFile(file); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bitmap&nbsp;bitmap; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitmap&nbsp;=&nbsp;MediaStore.Images.Media.getBitmap(getContentResolver(),&nbsp;uri); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitmap&nbsp;=&nbsp;crupAndScale(bitmap,&nbsp;300);&nbsp;//&nbsp;if&nbsp;you&nbsp;mind&nbsp;scaling &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pofileImageView.setImageBitmap(bitmap); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(FileNotFoundException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(IOException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}如果你想要裁剪和缩放这个图像public&nbsp;static&nbsp;&nbsp;Bitmap&nbsp;crupAndScale&nbsp;(Bitmap&nbsp;source,int&nbsp;scale){ &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;factor&nbsp;=&nbsp;source.getHeight()&nbsp;<=&nbsp;source.getWidth()&nbsp;?&nbsp;source.getHeight():&nbsp;source.getWidth(); &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;longer&nbsp;=&nbsp;source.getHeight()&nbsp;>=&nbsp;source.getWidth()&nbsp;?&nbsp;source.getHeight():&nbsp;source.getWidth(); &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;x&nbsp;=&nbsp;source.getHeight()&nbsp;>=&nbsp;source.getWidth()&nbsp;?0:(longer-factor)/2; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;y&nbsp;=&nbsp;source.getHeight()&nbsp;<=&nbsp;source.getWidth()&nbsp;?0:(longer-factor)/2; &nbsp;&nbsp;&nbsp;&nbsp;source&nbsp;=&nbsp;Bitmap.createBitmap(source,&nbsp;x,&nbsp;y,&nbsp;factor,&nbsp;factor); &nbsp;&nbsp;&nbsp;&nbsp;source&nbsp;=&nbsp;Bitmap.createScaledBitmap(source,&nbsp;scale,&nbsp;scale,&nbsp;false); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;source;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android