从相机拍摄图像后,图像附加选项不会出现

时间:2011-09-27 10:01:03

标签: android

frnds,点击按钮我打开相机拍照,我拍照成功,现在只有两个选项来点击图片,“保存”和“丢弃”,没有任何选项附加相机点击图像那么如何在下一个视图中附加图像和显示图像?

我的代码是......

       public void function2(int id){



               Intent cameraIntent = new   Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

                              startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

        }


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

             if (requestCode == CAMERA_PIC_REQUEST||requestCode == SELECT_PICTURE) {
                try{
                    try{
                      selectedImageUri = data.getData();

                    //OI FILE Manager
                   String  filemanagerstring = selectedImageUri.getPath();

                    //MEDIA GALLERY
                   selectedImagePath = getPath(selectedImageUri);

                    //DEBUG PURPOSE - you can delete this if you want
                    if(selectedImagePath!=null){

                         Intent i=new Intent(MainMenu.this,Imageprview.class);
                          startActivity(i);
                          System.out.println(selectedImagePath);
                    }

                    else
                        System.out.println("selectedImagePath is null");
                    if(filemanagerstring!=null)
                        System.out.println(filemanagerstring);
                    else System.out.println("filemanagerstring is null");

                    //NOW WE HAVE OUR WANTED STRING
                    if(selectedImagePath!=null)
                        System.out.println("selectedImagePath is the right one for you!");
                    else
                        System.out.println("filemanagerstring is the right one for you!");
                }catch (NullPointerException e) {
                    // TODO: handle exception
                }          }catch (ArrayIndexOutOfBoundsException e) {
                    // TODO: handle exception
                }     }
        }

        //UPDATED!
        public String getPath(Uri uri) {
            String[] projection = {MediaStore.Images.Media.DATA };
            Cursor cursor = managedQuery(uri, projection, null, null, null);
            if(cursor!=null)
            {
                //HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
                //THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
                int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToFirst();
                return cursor.getString(column_index);
            }
            else return null;
        }

3 个答案:

答案 0 :(得分:3)

Button btnCam=(Button)findViewById(R.id.camBtn); 
            btnCam.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) { 
                    // Intent detailActivity = new Intent(getBaseContext(),com.rodasys.profile.detailProfile.class);
                     //startActivity(detailActivity);

                    saveImage();


                } });    







     }

     public void saveImage()
     {

         try {

             FileOutputStream fos = openFileOutput("MyFile.jpeg", Context.MODE_WORLD_WRITEABLE);
             fos.close();
             File f = new File(getFilesDir() + File.separator + "MyFile.jpeg");

             Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
             intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
             intent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION,90);
             startActivityForResult(intent,IMAGE_CAPTURE);
             //startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE).putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)),IMAGE_CAPTURE);

             }
             catch(IOException e) {

             }

    }

     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == 0) {
                if (resultCode == RESULT_OK){

                    finish();
                    //imageView=(ImageView)findViewById(R.id.imageView1);
                    //imageView.setImageURI(imageUri);
                    Intent detActivity = new Intent(getBaseContext(),com.rodasys.profile.detailProfile.class);
                    startActivity(detActivity);
                    //Log.d("ANDRO_CAMERA","Picture taken!!!");
                    //
                }
            }
        }

IN DETAIL PROFILE ACTIVITY

public class detailProfile扩展了Activity {

String fname=new File(getFilesDir(),"MyFile.jpeg").getAbsolutePath();

//使用此文件路径,您可以在此活动中加载图像 }

您有另一种选择,您可以在创建新意图时通过该意图通过该意图,并且您可以通过新意图中的捆绑对象访问该图像。

bytes [] imgs = ... //你的形象 Intent intent = new Intent(this,YourActivity.class); intent.putExtra(“img”,imgs); startActivity(意图)

in detailprofile

bytes [] receiver = getIntent()。getExtra(“imgs”);

//使用Byte数组,您可以在ur imageview中显示图像

答案 1 :(得分:2)

没有这样的选项。您可以将文件保存到SD卡或任何外部存储 c我为在外部存储器中保存图像所做的代码。

public void onClick(View v)
{
if(v == imgForPhotograph) {

            path = Environment.getExternalStorageDirectory() + "/photo1.jpg";

            File file = new File(path);
            Uri outputFileUri = Uri.fromFile(file);
            Intent intent = new Intent(
                    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
            startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY);
        }
}


    public void onActivityResult(int requestCode, int resultCode, Intent data) {
            System.gc();
            if (requestCode == CAPTURE_IMAGE_ACTIVITY) {
                if (resultCode == Activity.RESULT_OK) {
                    try {
                        // Call function MakeFolder to create folder structure if
                        // its not created
                        if(imageBitmap != null) {
                            imageBitmap = null;
                            imageBitmap.recycle();
                        }

                        BitmapFactory.Options options = new BitmapFactory.Options();
                        options.inSampleSize = 3;
                        imageBitmap = BitmapFactory.decodeFile(path, options);


                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); // bm

                           byte[] bmpbyte = baos.toByteArray();
                           //
                        Imagebase64= Base64.encodeToString(bmpbyte, Base64.DEFAULT); // set


                        imgForPhotograph.setImageBitmap(imageBitmap);
                        isImageTaken = true;
                        // Name for image
                        IMAGEPATH = getString(R.string.Image)
                                + System.currentTimeMillis();
                        SaveImageFile(imageBitmap,IMAGEPATH);
                    } catch (Exception e) {
                        Toast.makeText(this, "Picture Not taken",
                                        Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                    }
                }
            }

}

所有最好的......

答案 2 :(得分:0)

大家好,这段代码正在运行。对于相机并存储到SD卡:

public class CampicsaveActivity extends Activity
{
    /** Called when the activity is first created. */
    FrameLayout frm;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        frm=(FrameLayout)findViewById(R.id.preview);
        Button btnCam=(Button)findViewById(R.id.buttonClick); 
        btnCam.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            { 
                //  Intent detailActivity = new Intent(getBaseContext(),com.rodasys.profile.detailProfile.class);
                // startActivity(detailActivity);

                saveImage(0);
            } });    

        }

        public void saveImage(int IMAGE_CAPTURE)
        {

            try
            {
                FileOutputStream fos = openFileOutput("MyFile.jpeg", Context.MODE_WORLD_WRITEABLE);
                fos.close();
                File f = new File(getFilesDir() + File.separator + "MyFile.jpeg");

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
                intent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION,90);
                startActivityForResult(intent,IMAGE_CAPTURE);
                //startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE).putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)),IMAGE_CAPTURE);
            }
            catch(IOException e)
            {;}
        }
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data)
        {
            if (requestCode == 0)
            {
                if (resultCode == RESULT_OK)
                {
                    finish();
                    //imageView=(ImageView)findViewById(R.id.imageView1);
                    //imageView.setImageURI(imageUri);
                    Intent detActivity = new Intent(getBaseContext(),CampicsaveActivity.class);
                    startActivity(detActivity);
                    //Log.d("ANDRO_CAMERA","Picture taken!!!");
                    //
                }
            }
        }
    }
}