2015-06-22 39 views
-1

請幫助我如何從自定義相機拍攝照片並將其顯示在其他活動上,請給我更詳細的答案,我應該放什麼代碼,以及在哪裏,請告訴我,什麼樣的變量,int,字符串,布爾我應該創建,
這裏是我的代碼:如何使用自定義相機拍攝照片並將其顯示在其他活動上?

主要活動:

+0

還沒有通過,但你可以將圖像數據存儲到本地文件存儲,並將Bundle路徑傳遞給活動?在第二項活動中,您可以從本地文件存儲中讀取。 – Emma

+0

我試過用捆綁包,但我不能保存到本地文件存儲,idk爲什麼它不顯示,它在測試時關閉我的應用 –

+0

您試圖在發送之前存儲?你基本上只需要通過bundle傳遞字符串路徑到本地文件。您也可能需要考慮在存儲之前進行壓縮。 – Emma

回答

0
@Override 
public void onPictureTaken(byte[] data, Camera camera) { 
    final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 

    // Store bitmap to local storage 
    FileOutputStream out = null; 
    try { 
     // Prepare file path to store bitmap 
     // This will create Pictures/MY_APP_NAME_DIR/ 
     File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_PICTURES), "MY_APP_NAME_DIR"); 
     if (!mediaStorageDir.exists()) { 
      if (!mediaStorageDir.mkdirs()) { 
       Log.d(Constants.LOG_TAG, "failed to create directory"); 
       return null; 
      } 
     } 

     // Bitmap will be stored at /Pictures/MY_APP_NAME_DIR/YOUR_FILE_NAME.jpg 
     String filePath = mediaStorageDir.getPath() + File.separator + "YOUR_FILE_NAME.jpg"; 
     out = new FileOutputStream(filePath); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (out != null) { 
       out.close(); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

您可以使用接口從CameraPreview類通過YOUR_FILE_PATH到MainActivity類別。 然後在MainActivity.java

Intent i = new Intent(this, EditPicture.class); 
i.putExtra("FILE_PATH", YOUR_FILE_PATH); 
startActivity(i); 

在EditPicture活動

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

    if (getIntent().hasExtra("FILE_PATH")) { 
     String filePath = getIntent().getStringExtra("FILE_PATH"); 

     // Read bitmap from local file 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
     Bitmap bitmap = BitmapFactory.decodeFile(filePath, options); 
     yourImageView.setImageBitmap(bitmap); 
    } 
} 

最後,爲了讓您的應用程序寫入外部存儲添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>到AndroidManifest.xml。

這是如何將位圖寫入外部存儲器的示例。如果要存儲到內部存儲器,如緩存或其他選項,請參閱http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

如果您需要我詳細說明,請告訴我。

+0

它似乎可以達到我,我只有2個小問題,「FILE PATH」和「YOUR_FILE_PATH」,因爲我是一個C++ C#開發人員,學習Android 4個月至今,我從來沒有與照片做,現在這使得我有很多問題,我該如何設置它們(FILE_PATH)和YOUR_FILE_PATH? –

+0

更新了答案。 「FILE_PATH」是捆綁的字符串標籤。你可以按照你的意願命名它。你只需要爲putExtra和getStringExtra – Emma

+0

表示謝謝,但是YOUR_FILE_PATH?很抱歉要問這麼多,我知道這很惱人,但我必須在本週完成這個應用程序 –

相關問題