2016-03-19 28 views
0

Bir android uygulama üzerinde çalışıyorum ve bir fotoğraf çekip kaydetmem gerekiyor. Çalışıyor ve resmim telefonun bir dizinine kaydedilir. Özellikle de Resim dizininde.Android Uygulaması: image image

Yani, burada kamera (yeni aktivite) başlatmak ve resim çekmek için düğmeye ile benim sınıf parametresi:

public class Parametre extends Activity { 

    private EditText ETpseudo= null; 
    private Button buttonPhoto = null; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.parametres); 

     ETpseudo =(EditText) findViewById(R.id.editPseudo); 
     buttonPhoto = (Button) findViewById(R.id.buttonPhoto); 

     //ivPhoto.setImageBitmap(); 

     buttonPhoto.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       startActivity(new Intent(Parametre.this, CameraActivity.class)); 
      } 
     });  

    } 

} 

CameraActivity: Yani

public class CameraActivity extends Activity { 

    private Camera mCamera; 
    private CameraPreview mCameraPreview; 
    private ImageView cadrePhoto = null; 


    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     Log.d("DEBUG", String.valueOf(grantResults[0])); 
     startCamera(); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.camera); 

     Button captureButton = (Button) findViewById(R.id.button_capture); 

     startCamera(); 

     captureButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mCamera.takePicture(null, null, mPicture); 
      } 
     }); 
    } 

    private void startCamera(){ 

     mCamera = getCameraInstance(); 
     mCamera.startPreview(); 
     mCameraPreview = new CameraPreview(this, mCamera); 
     FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview); 
     preview.addView(mCameraPreview); 
     setCameraDisplayOrientation(this, 1, mCamera); 
    } 

    /** 
    * Helper method to access the camera returns null if it cannot get the 
    * camera or does not exist 
    * 
    * @return 
    */ 
    @TargetApi(Build.VERSION_CODES.GINGERBREAD) 
    private Camera getCameraInstance() { 
     Camera camera = null; 
     try { 
      camera = Camera.open(1); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return camera; 
    } 


    @TargetApi(Build.VERSION_CODES.GINGERBREAD) 
    public void setCameraDisplayOrientation(Activity activity, int cameraId,android.hardware.Camera camera) { 

     android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo(); 
     android.hardware.Camera.getCameraInfo(cameraId, info); 
     int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); 
     int degrees = 0; 
     switch (rotation) { 
      case Surface.ROTATION_0: 
       degrees = 0; 
       break; 
      case Surface.ROTATION_90: 
       degrees = 90; 
       break; 
      case Surface.ROTATION_180: 
       degrees = 180; 
       break; 
      case Surface.ROTATION_270: 
       degrees = 270; 
       break; 
     } 
     int result; 
     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
      result = (info.orientation + degrees) % 360; 
      result = (360 - result) % 360; // compensate the mirror 
     } else { // back-facing 
      result = (info.orientation - degrees + 360) % 360; 
     } 
     camera.setDisplayOrientation(result); 
    } 

    Camera.PictureCallback mPicture = new Camera.PictureCallback() { 
     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
      File pictureFile = getOutputMediaFile(); 
      if (pictureFile == null) { 
       Log.d("Error", "Error creating media file, check storage permissions: "); 
       return; 
      } 
      try { 
       FileOutputStream fos = new FileOutputStream(pictureFile); 
       fos.write(data); 
       fos.close(); 


      } catch (FileNotFoundException e) { 
       Log.d("DBG", "File not found: " + e.getMessage()); 
      } catch (IOException e) { 
       Log.d("Error", "Error accessing file: " + e.getMessage()); 
      } 
     } 
    }; 

    private static File getOutputMediaFile() { 
     File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyCameraApp"); 

     if (!mediaStorageDir.exists()) { 
      if (!mediaStorageDir.mkdirs()) { 
       Log.d("MyCameraApp", "failed to create directory"); 

       return null; 
      } 
     } 
     // Create a media file name 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     File mediaFile; 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg"); 

     return mediaFile; 

    } 
} 

, aldıktan sonra Fotoğraf, görüntüyü parametre görünümünde bir ImageView üzerinde görüntülemek istiyorum. Ama bunu nasıl yapacağımı bilmiyorum. Fotoğrafı nasıl geri yükleyebilirim ve View parametresinde nasıl görüntüleyebilirim?

Teşekkürler. için

Maalesef ingilizcem:/

cevap

1

sadece resim picturecallback yönteminde alındığında bir statik bitmap oluşturmak kadar kolay bir şekilde yapabilirsiniz

   Bitmap bmap=BitmapFactory.decodeByteArray(data, 0, data.length,sizeOptions); 


      Log.e("clickedbitmaaapp", String.valueOf(bmap)); 

statik Bitmap mBitmap = bMAP;

Bu bitmapi, bu kolayca erişebileceğiniz başka bir sınıfta oluşturun.

0

Teşekkürler.

Şimdi kodumu test edemiyorum. Ama bunun işe yarayacağını düşünüyor musun? : (cameraActivity) benim parametre sınıfında sonra

public class CameraActivity extends Activity { 

static Bitmap mBitmap; 

... 

Camera.PictureCallback mPicture = new Camera.PictureCallback() { 
    @Override 
    public void onPictureTaken(byte[] data, Camera camera) { 
     File pictureFile = getOutputMediaFile(); 
     if (pictureFile == null) { 
      Log.d("Error", "Error creating media file, check storage permissions: "); 
      return; 
     } 
     try { 
      FileOutputStream fos = new FileOutputStream(pictureFile); 
      fos.write(data); 
      fos.close(); 

      BitmapFactory.Options options = new BitmapFactory.Options(); 

      Bitmap bmap= BitmapFactory.decodeByteArray(data, 0, data.length, options); 
      mBitmap = bmap; 

     } catch (FileNotFoundException e) { 
      Log.d("DBG", "File not found: " + e.getMessage()); 
     } catch (IOException e) { 
      Log.d("Error", "Error accessing file: " + e.getMessage()); 
     } 
    } 
}; 

ve:

public class Parametre extends Activity { 

private EditText ETpseudo= null; 
private Button buttonPhoto = null; 
private ImageView iv = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.parametres); 

    ETpseudo =(EditText) findViewById(R.id.editPseudo); 
    buttonPhoto = (Button) findViewById(R.id.buttonPhoto); 

    //ivPhoto.setImageBitmap(); 

    buttonPhoto.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(Parametre.this, CameraActivity.class)); 
     } 
    }); 



     ImageView imageView=(ImageView)findViewById(R.id.cadreImage); 
     imageView.setImageBitmap(CameraActivity.mBitmap); 

    } 

}