2012-01-04 43 views
1

到目前爲止,我有我的應用程序使用照相機拍攝照片AndroidCamera.java,然後保存圖像並顯示在一個新的活動Punch.java,它工作正常。在這個屏幕上有兩個選項也使用圖像或重新拍攝圖像,如果單擊按鈕重新拍攝它將返回到AndroidCamera.java活動,如果單擊使用,它將轉到活動BeatEmUp.java這是我想要的新活動再次顯示圖像。Android攜帶照相機圖像到新的活動

我只是無法弄清楚要放什麼東西在BeatEmUp.java活動來顯示圖像再次在這個新的活動,你可以下面,我傳遞字符串從AndroidCamera.javaPunch.java代碼中看到的,但不認爲我能做到這又從Punch.javaBeatEmUp.java

更新阿迪爾·蘇姆羅

BeatEmUp.java活動現在當點擊Use按鈕強制關閉。

好下面的代碼已經更新,我在這是給我的錯誤,我也加入了BeatEmUp.java開始改變intent.putExtra("filepath",imagePath); Use.putExtra("filepath",imagePath);的意圖,因爲我不知道如果這是正確的我認爲這將只是因爲我用它來顯示對Punch.java

圖像AndroidCamera.java

PictureCallback myPictureCallback_JPG = new PictureCallback(){ 

    public void onPictureTaken(byte[] arg0, Camera arg1) { 
     // TODO Auto-generated method stub 
     /*Bitmap bitmapPicture 
      = BitmapFactory.decodeByteArray(arg0, 0, arg0.length); */ 
     int imageNum = 0; 
     Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     File imagesFolder = new File(Environment.getExternalStorageDirectory(), "Punch"); 
     imagesFolder.mkdirs(); // <---- 
     String fileName = "image_" + String.valueOf(imageNum) + ".jpg"; 
     File output = new File(imagesFolder, fileName); 
     while (output.exists()){ 
      imageNum++; 
      fileName = "image_" + String.valueOf(imageNum) + ".jpg"; 
      output = new File(imagesFolder, fileName); 
     } 

     Uri uriSavedImage = Uri.fromFile(output); 
     imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 


     OutputStream imageFileOS; 
     try { 
      imageFileOS = getContentResolver().openOutputStream(uriSavedImage); 
      imageFileOS.write(arg0); 
      imageFileOS.flush(); 
      imageFileOS.close(); 

      Toast.makeText(AndroidCamera.this, 
        "Image saved", 
        Toast.LENGTH_LONG).show(); 

     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     Intent intent = new Intent(getBaseContext(), Punch.class); 
     intent.putExtra("filepath",Uri.parse(output.getAbsolutePath()).toString()); 
     //just using a request code of zero 
     int request=0; 
     startActivityForResult(intent,request); 
    }}; 

Punch.java

相同的代碼
String imagePath; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.punch); 

    imagePath = this.getIntent().getStringExtra("filepath"); 

    Button buse = (Button) findViewById(R.id.buse); 
    buse.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Intent Use = new Intent(Punch.this, BeatEmUp.class); 
      Use.putExtra("filepath",imagePath); 
      startActivity(Use);     
     } 
    }); 

    Button bretake = (Button) findViewById(R.id.bretake); 
    bretake.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Intent Retake = new Intent(Punch.this, AndroidCamera.class); 
      startActivity(Retake);    
     } 
    }); 

    String myRef = this.getIntent().getStringExtra("filepath"); 
    File imgFile = new File(myRef); 

    Log.e(">>>", myRef); 
    if(imgFile.exists()){ 

     Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
     ImageView myImage = (ImageView) findViewById(R.id.imagepunch); 
     myImage.setImageBitmap(myBitmap); 

    } 
} 

} 

BeatEmUp.java

String myRef = this.getIntent().getStringExtra("filepath"); 
    File imgFile = new File(myRef); 

    Log.e(">>>", myRef); 
    if(imgFile.exists()){ 

     Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
     ImageView myImage = (ImageView) findViewById(R.id.imagepunch); 
     myImage.setImageBitmap(myBitmap); 

回答

1

是。您可以再次將該圖像URI傳遞給下一個Activity

你只需要存儲在Punch.java類類級別可變圖像路徑,並開始BeatEmUp Activity時,再次把該映像路徑在Intent並把它在BeatEmUp

編輯:

取一類水平StringPunch.java

String imagePath; 

和內部onCreate()

imagePath = this.getIntent().getStringExtra("filepath"); 

和起始BeatEmUp活動

Intent Use = new Intent(Punch.this, BeatEmUp.class); 
intent.putExtra("filepath",imagePath); 
startActivity(Use); 
+0

時如何將它存儲在一個類級別的變量,然後再次調用它是它像'字符串[]圖片=文件路徑;'在' Punch.java',但我不明白如何將其納入'BeatEmUp.java'的意圖。 – Matt 2012-01-04 11:02:25

+0

幾乎所有我認爲,我已經更新了你的問題。 – Matt 2012-01-04 11:27:48

+0

我已經把它放在一個pastebin爲你http://pastebin.com/utyAwrfE – Matt 2012-01-04 11:33:08

相關問題