【问题标题】:Not set image from camera to imageview in android [duplicate]未在android中将图像从相机设置为imageview [重复]
【发布时间】:2018-01-02 06:07:43
【问题描述】:

我正在尝试在 android 中显示从 camera 内部的 imageview 捕获的图像 从正确的画廊作品中选择一张照片 但摄像头失败:“应用已停止”

images.get(2).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    current_image = 2;
                    if (!fill_images[current_image]) {
                        show_dialog();
                    }else {
                        show_delete_dialog();
                    };
                }
            });

 public void show_dialog() {        
                     final ArrayList<String> list = new ArrayList<String>();
                     list.add("select from gallery");
                     list.add("take a photo");

                     AlertDialog.Builder builder = new AlertDialog.Builder(NewAdActivity.this);

                     builder.setAdapter(new ArrayAdapter<String>(NewAdActivity.this, R.layout.row, R.id.mytext, list)
                             , new DialogInterface.OnClickListener() {
                                 @Override
                                 public void onClick(DialogInterface dialogInterface, int i) {

            if (i == 0) {//gallery                           Intent gallery_intent=new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI) ;               startActivityForResult(Intent.createChooser(gallery_intent,"select image"),2);

                                     }
 else if (i == 1){//camera
          Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

      File file=new File(Environment.getExternalStorageDirectory(),"file"+String.valueOf(System.currentTimeMillis()+".jpg"));

              uri= Uri.fromFile(file);

            camera_intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);

             camera_intent.putExtra("return-data",true);

         startActivityForResult(camera_intent,1); 

                                     }
                                 }
                             });
                     builder.show();

                 }

【问题讨论】:

  • 那有什么问题?
  • 有什么问题?
  • 请添加其他代码
  • @shararti-kaka 从正确的图库作品中选择照片但相机失败:“应用程序已停止”
  • 尝试查看日志并在此处发布错误日志。

标签: android imageview android-camera-intent


【解决方案1】:

首先确保您在 ma​​nifest.xml 文件中声明了所有必要的 permission。那就试试吧——

public class MainActivity extends AppCompatActivity {

    private static final int SELECTED_PICTURE=1;
    private ImageView iv;
    private Button btnClick;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        iv=(ImageView)findViewById(R.id.imageView1);
        btnClick = (Button) findViewById(R.id.btnClick);
        btnClick.setOnClickListener(new View.OnCLickListener(){
              public void onClick(View view) {
            btnClick(view);
        }
        });
    }

    public void btnClick(View v){
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, SELECTED_PICTURE);
    }

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {  
        Bitmap photo = (Bitmap) data.getExtras().get("data"); 
        iv.setImageBitmap(photo);
    }  
    }
}

别忘了将permission 添加到manifest.xml -

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

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

【讨论】:

  • 能否请您也发布您的错误日志?
【解决方案2】:
new Camera.PictureCallback() {
      @Override
      public void onPictureTaken(final byte[] data, Camera camera) {
            bytes = data;
      }
}

然后将字节转换为位图

Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

然后设置imageview imageView.setImageBitmap(bitmap);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多