如何在ListView中使用相机意图

时间:2014-06-03 04:21:27

标签: android listview android-camera-intent onactivityresult

public void CAPTURE()
{
    final ListView mListView = (ListView)findViewById(R.id.lvImage);    

    .... set adapter ... 

    mListView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> myAdapter, View myView,final int position,long mylng)
        {               

            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

            File imagesFolder = new file(Environment.getExternalStorageDirectory(), "MyImage");
            imagesFolder.mkdirs();
            filePath = "/MyImage/test.png";
            File image = new File(imagesFolder, "test.png");
            Uri uriSavedImage = Uri.fromFile(image);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
            startActivityForResult(intent, CAMERA_REQUEST);
        }
    });
}


protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{

    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK && requestCode == CAMERA_REQUEST) 
    {

        String p = Environment.getExternalStorageDirectory() + filePath;

            bitmap = BitmapFactory.decodeFile(p);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);            
            byte[] byteArray = stream.toByteArray();


            Intent intent = new Intent(getApplicationContext(),ImageActivity.class);
            intent.putExtra("image", byteArray);
            intent.putExtra("path", p);

            startActivity(intent);
        }

     }
}

我在点击列表视图中的项目并创建文件夹时调用相机意图  和文件图像这是有效的  我去文件夹,看到一个完美的图像  但是我的onActivityResult仍然没有工作  我想将path和imagebyte传递给下一个活动

我尝试在startActivityForResult(intent,CAMERA_REQUEST)下放置finish(); 但没有工作

我该怎么办请帮助我。抱歉英文不好

非常感谢

2 个答案:

答案 0 :(得分:0)

通过此方法,您可以上传相机中的图像

Uri myPicture;
private static final int CAMERA_REQUEST = 1888;
public void camera_upload()
{

    ContentValues values = new ContentValues();
    values.put(Media.TITLE, "My demo image");
    values.put(Media.DESCRIPTION, "Image Captured by Camera via an Intent");
    myPicture = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);

    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, myPicture);
    startActivityForResult(cameraIntent, CAMERA_REQUEST);

}

还在清单中提供以下权限

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

转到下一个活动的方法

Intent i = new Intent(getApplicationContext(),
                        Set_theme_Activity.class);
                // passing array index
                i.putExtra("id", position);
                startActivity(i);
                finish();

在活动中获取图片的方法(NextActivity)

Intent i = getIntent();
        // Selected image id
        int position = i.getExtras().getInt("id");
        ImageAdaptor imageAdapter = new ImageAdaptor(this);

答案 1 :(得分:0)

嘿,你没有从onactivityresult中提取意图中的数据,而这些数据是你在startactivityforresult中的意图。