使用ACTION_CAPTURE_IMAGE崩溃的相机应用程序

时间:2017-12-10 05:50:32

标签: android

我正在尝试制作一款可在我的应用主要活动的ImageView中打开相机并拍摄照片的应用。但是当我运行相机意图时,应用程序崩溃了。

这是我的MainActivity.class

import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

static final int REQUEST_IMAGE_CAPTURE=1;
public void capture(View v){
  MainActivity m=new MainActivity();
  m.captureImage();

}

public void captureImage(){
    Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if(i.resolveActivity(getPackageManager())!=null){
        startActivityForResult(i,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 iv=findViewById(R.id.myimage);
        iv.setImageBitmap(imageBitmap);
    }    }
}

任何人都会感激不尽。

2 个答案:

答案 0 :(得分:0)

您正在创建新的MainActivity实例,仅忽略此用途。

static final int REQUEST_IMAGE_CAPTURE=1;
public void capture(View v){
   captureImage();
}

并且在Manifest上添加了确保相机权限。

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

如果使用Android M +请求检查运行时摄像头权限。

答案 1 :(得分:0)

您永远不会创建活动的实例。

  

MainActivity m = new MainActivity(); //错误

Intent是允许在Android的组件之间进行通信的API。关于调用方法 - &gt;你在同一个类中调用方法,为什么你创建一个对象只是调用它。无论如何,它将使用当前参考调用。

XYZ