2016-02-08 104 views
5

我在Android的新的和建立小型應用程序,它需要從攝像機畫面並將其保存到畫廊。顯示拍攝的圖像在新的活動

這裏是功能捕獲圖像。

private void onCaptureImageResult(Intent data) { 
     Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes); 

     File destination = new File(Environment.getExternalStorageDirectory(), 
       System.currentTimeMillis() + ".jpg"); 

     FileOutputStream fo; 
     try { 
      destination.createNewFile(); 
      fo = new FileOutputStream(destination); 
      fo.write(bytes.toByteArray()); 
      fo.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

這是activity_main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="10dp" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:padding="5dp" > 

     <Button 
      android:id="@+id/btnSelectPhoto" 
      android:background="#149F82" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Select Photo" /> 
    </LinearLayout> 



</LinearLayout> 

我想要做的是,當圖像被捕獲我想顯示在另一個活動(頁)圖像不具有鍵相同的活動是什麼捕獲圖像。如何做到這一點。

在此先感謝

+0

你需要保存圖像到設備比獲取捕獲圖像的路徑 http://stackoverflow.com/questions/20327213/getting-path-of-captured-image-in-android-using-camera-intent並將其傳遞給所需的活動 –

+1

您已經將圖像保存在外部存儲器中,即文件目標=新文件(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+「.jpg」);'只需切換活動並在那裏讀取文件。 –

+1

獲得從拾取器意圖返回的數據在onactivityResult 保護無效onActivityResult(INT requestCode,INT發送resultCode,意圖數據){ 如果(requestCode == CAMERA_REQUEST && resultCode爲== RESULT_OK){ 位圖照片=(位圖)data.getExtras ()獲得( 「數據」); Uri tempUri = getImageUri(getApplicationContext(),photo); } 然後使用包將該數據傳遞給新活動,然後顯示該包中的圖像。 – androidnoobdev

回答

0

我假設你知道如何拍攝的意圖,從圖像信息。

的情況下,如果你不知道。谷歌它,你會發現很多解決方案。

check this one

您可以採用兩種方式來顯示捕獲的下一activty圖像。

1 =>開始您想要顯示圖像的新活動。在onCreate方法打開相機,並從相機onActivityResult結果並顯示圖像。

2 =>打開相機,並在onActivityResult中獲取數據並將此信息傳遞給您的下一個活動,並在onCreate方法中顯示圖像。

0

下面是一個解決方案。您可以將捕獲的位圖傳遞給意圖,然後開始新的活動。像下面這個一樣。一旦你的圖像形成捕獲您可以實現這個邏輯您onCaptureImageResult()內。

Intent intent = new Intent(this, NewActivity.class); 
    intent.putExtra("MyImage", bitmap); 
    startActivity(intent); 

您可以從下面的步驟後,從意圖獲取位圖。並將圖像設置爲ImageView或使用它做其他事情。

ImageView imgView = (ImageView) img.findViewById(R.id.myIMageView); /* Called inside OnCreate() using the parent View */ 
    Intent intent = getIntent(); 
    Bitmap bitmap = (Bitmap) intent.getParcelableExtra("MyImage"); 

我希望它能幫助你。請享用。

+1

它可以拋出異常,如果圖像很大。 – androidnoobdev

1

其簡單,捕捉照片後,您的照片將被保存。現在,在「活動結果」方法中,您只需使用意圖轉到第二個活動。

在您的第二個活動中,獲取保存的圖像的路徑並將其設置到您的ImageView中。

3

您只需將路徑傳遞給您的方法中的新活動即可。

Intent intent = new Intent(this, NewActivity.class); 
intent.putExtra("MyImagePath", destination.getAbsoluteFile()); 
startActivity(intent); 

而且在新的活動

File imgFile = new File(filePath); 

if(imgFile.exists()){ 

    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 

    ImageView myImage = (ImageView) findViewById(R.id.imageviewTest); 

    myImage.setImageBitmap(myBitmap); 

} 
1

MainActivity

String filePath; 
    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     ... 
     } 

    private void onCaptureImageResult(Intent data) { 
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes); 

     String fileName = System.currentTimeMillis() + ".jpg" 

     filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + fileName; 

     File destination = new File(filePath); 

     ... 
     } 

     yourButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       Intent intent = new Intent(getApplicationContext(), AnotherActivity.class); 
       intent.putExtra("filePath", filePath) 
       startActivity(intent); 

       } 
      }); 

AnotherActivity

String filePath; 
    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

    Intent intent = this.getIntent(); 

    filePath = intent.getStringExtra("filePath"); 

    File imgFile = new File(filePath); 

    if(imgFile.exists()){ 

     Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 

     ImageView myImage = (ImageView) findViewById(R.id.imageviewTest); 

     myImage.setImageBitmap(myBitmap); 

     } 
    } 
+0

當我寫這段代碼時,它會給出錯誤。 filePath = Environment.getExternalStorageDirectory(), System.currentTimeMillis()+「.jpg」; 。(Incompleble Types) –

+0

錯誤是必需的:java.lang.string找到:java.io.File –

+0

刪除+「。jpg」並再次檢查pls –

相關問題