2012-05-11 1 views
1

Je suis encore jeune au développement, et je me demandais si quelqu'un peut me guider vers la bonne direction dans ma situation parce que je ne suis pas sûr par où commencer:Android: Ajout de nouveaux boutons après la capture d'image pour accepter/refuser l'image

schéma:

Après avoir appuyé sur une capture_button pour capturer une image (capture_button et imagePreview est en même activité), je voudrais supprimer le capture_button et ont un bouton ACCEPT ou DECLINE. Ces boutons sont censés être accept l'image, puis enregistrer, ou decline l'image et revenir à l'imagePreview.

Maintenant, je ne sais pas si je suis censé créer une autre activité quand capture_button est pressé,

PhotoActivity.java

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.photo); 

     mCamera = getCameraInstant(); 
     mCameraPreview = new CameraPreview(this, mCamera); 

     FrameLayout preview = (FrameLayout) findViewById(id.camera_preview); 
     preview.addView(mCameraPreview); 

     // Add a listener to the Capture button 
     Button captureButton = (Button) findViewById(id.button_capture); 
     captureButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // get an image from the camera 
        mCamera.takePicture(null, null, mPicture); 

       } 
      } 
     ); 
    } 

PictureCallback mPicture = new PictureCallback(){ 
     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
     Log.e("photo","pictureCallback"); 
      // TODO Auto-generated method stub 
      File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE); 
      if(pictureFile==null){ 
       return; 
      } 
      try { 
       FileOutputStream fos = new FileOutputStream(pictureFile); 
       fos.write(data); 
       fos.close(); 
      } catch (FileNotFoundException e) { 
       Log.d(TAG, "File not found: " + e.getMessage()); 
      } catch (IOException e){ 
       Log.d(TAG, "Error accessing file: " + e.getMessage()); 
      } 
     } 
}; 

    private File getOutputMediaFile(int type){ 
     File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES), "Photo"); 
     if (!mediaStorageDir.exists()){ 
      if (! mediaStorageDir.mkdirs()){ 
       Log.d("Photo", "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; 
    } 

Maintenant, suis-je censé faire une sorte de Intent après le clic capture_button, ou après

PictureCallback mPicture = new PictureCallback(){ 

et alors le onPictureTaken à l'autre activité? Ou est-ce que ma pensée a tout faux?

Aidez s'il vous plaît?

Merci d'avance.

Répondre

0

essayer cela, il vous aidera à

 final LinearLayout accept_deciline = new LinearLayout(getApplicationContext()); 
     LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
     accept_deciline.setOrientation(LinearLayout.HORIZONTAL); 
     Button accept = new Button(getApplicationContext()); 
     accept.setText("Accept"); 
     Button decline = new Button(getApplicationContext()); 
     decline.setText("Decline"); 
     accept_deciline.addView(accept); 
     accept_deciline.addView(decline); 
     addContentView(accept_deciline, lp); 
     accept_deciline.setVisibility(View.INVISIBLE); 

     accept.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // SAVE YOUR IMAGE. 
      } 
     }); 

     decline.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
      } 
     }); 
     //KEEP THIS LINE IN YOUR PICTURE CALLBACK NOT HERE. 
     accept_deciline.setVisibility(View.VISIBLE); 

Ce sera mieux si vous allez créer votre ACCEPTER AGENCEMENT DECLINE en fichier XML ET RENDRE INVISIBLE QUAND VOTRE IMAGE SUR PRISE SERA MIS FAITES JUSTE VISIBLE.

0

Une chose que j'ai faite est d'utiliser un dialogue d'alerte qui apparaît après que vous preniez une photo. Vous pouvez définir les écouteurs onclick pour effectuer les actions dont vous avez besoin en fonction de ce que vous voulez faire (accepter ou refuser). Cela éviterait de devoir apporter des modifications à vos mises en page et d'ajouter des boutons et de les emporter. Vous pouvez lancer le dialogue d'alerte en plaçant la méthode alertdialog.show() à la fin de votre méthode onPictureTaken. Si vous faites cela, vous devrez avoir le chemin de l'image que vous venez de prendre afin de permettre à un utilisateur de le détruire s'il le refuse et sur certains appareils, il faudra quelques secondes au service média pour mettre à jour les images Filepath donc si vous allez détruire une image, il ne voit pas que vous pouvez obtenir une force proche. Il y a plusieurs façons de le faire et je ne m'en souviens pas en ce moment, mais l'un d'entre eux est bien plus rapide que le reste.

Vous n'auriez pas besoin d'une intention, sauf si vous envisagez de lancer un autre type d'action, d'activité, de service, etc. Par exemple si vous voulez passer le chemin de fichier de l'image à une autre activité où vous pouvez y apporter des modifications, le télécharger, ou quoi que ce soit, vous pouvez ajouter le chemin de l'image à cette intention: intent.putExtra ("imagepath", chemin de l'image);

Questions connexes