2017-05-25 2 views
0



Quelqu'un pourrait-il m'aider avec un problème que j'ai?

Je voudrais faire une activité dans laquelle j'ai un bouton photo faire (imageButton_add_playground_image) et après l'avoir pressé mon application ouvre la caméra pour que je prenne une photo (juste une photo). Après avoir fait une photo je voudrais l'envoyer à cette activité et changer le bouton de la photo à une photo faite par l'utilisateur (mais en laissant faire l'activité du bouton photo dessus donc la photo pourrait être remplacée par une autre si celle-ci n'est pas n'est pas assez bon).

Mon code * .java est la suivante:Android Studio: Comment remplacer le bouton de l'image avec la photo après avoir pris une photo dans la caméra android

<!-- begin snippet --> 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.provider.MediaStore; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.EditText; 
    import android.widget.ImageButton; 
    import android.widget.RatingBar; 
    import android.widget.Toast; 

    import static ???.MainActivity.REQUEST_IMAGE_CAPTURE; 

    public class AddPlayground extends AppCompatActivity { 

     EditText playGroundName; 
     RatingBar rate; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Intent intent = getIntent(); 
     setContentView(R.layout.activity_add_playground); 
     playGroundName = (EditText) findViewById(R.id.editText_playground_name); 
     rate = (RatingBar) findViewById(R.id.ratingBar); 
     Double message = intent.getDoubleExtra(MainActivity.EXTRA_MESSAGE, 0); 
     Toast.makeText(this, String.valueOf(message), Toast.LENGTH_SHORT).show(); 
     } 

     public void addPhoto(View view) { 
     Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
      startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
      } 
     } 

    } 

<!-- end snippet --> 

Et mon code dans le fichier * .xml est la suivante:

<!-- begin snippet --> 
<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="???.AddPlayground"> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:orientation="vertical" android:layout_width="368dp" 
     android:layout_height="495dp" 
     android:weightSum="1" 
     tools:layout_editor_absoluteY="8dp" 
     tools:layout_editor_absoluteX="8dp"> 
     <EditText 
      android:id="@+id/editText_playground_name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:inputType="textPersonName" 
      android:hint="Name of playground" /> 
     <ImageButton 
      android:id="@+id/imageButton_add_playground_image" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.52" 
      android:onClick="addPhoto" 
      app:srcCompat="@drawable/ic_menu_camera" /> 
     <RatingBar 
      android:id="@+id/ratingBar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:numStars="5" 
      android:visibility="visible" /> 
     <EditText 
      android:id="@+id/editText_playground_comment" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:inputType="textMultiLine" 
      android:hint="Playground description" /> 
     <Button 
      android:id="@+id/button_add_playground" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:onClick="addNewPlayground" 
      android:text="Add" /> 
    </LinearLayout> 

</android.support.constraint.ConstraintLayout> 
<!-- end snippet --> 

Sous la ??? il y a autre chose mais je l'ai enlevé car ce n'est pas crucial pour cette question.

Répondre

0

lorsque vous commencez avec des tutoriels que vous devriez lire le texte entier ... HERE vous doc complète (méthode addPhoto est de 1: 1 copie de dispatchTakePictureIntent méthode là-dedans)

bref, vous devez également poignée de retour bitmap (vignette)

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     Bitmap imageBitmap = (Bitmap) extras.get("data"); 
     yourImageView.setImageBitmap(imageBitmap); 
    } 
} 

réception pleine taille Bitmap est décrite dans l'article de Save the Full-size Photo doc

0

ci-dessus lié L'applicatio Camera applications n encodes le photo dans le retour Intent livré à onActivityResult() comme un petit Bitmap dans le extras, sous la clé "data".

Utilisez le code ci-dessous pour récupérer image et l'affiche dans un ImageButton.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     Bitmap imageBitmap = (Bitmap) extras.get("data"); 
     imageButton.setImageBitmap(imageBitmap); 
    } 
} 

Voici le code complet:

import android.app.Activity; 
import android.content.Intent; 
import android.provider.MediaStore; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.RatingBar; 
import android.widget.Toast; 


public class AddPlayground extends AppCompatActivity { 

    EditText playGroundName; 
    RatingBar rate; 
    ImageButton imageButton; 

    private static final int REQUEST_IMAGE_CAPTURE = 1; 

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

    setContentView(R.layout.activity_add_playground); 
    playGroundName = (EditText) findViewById(R.id.editText_playground_name); 
    rate = (RatingBar) findViewById(R.id.ratingBar); 
    imageButton = (ImageButton) findViewById(R.id.imageButton_add_playground_image); 

    Intent intent = getIntent(); 
    Double message = intent.getDoubleExtra(MainActivity.EXTRA_MESSAGE, 0); 

    Toast.makeText(this, String.valueOf(message), Toast.LENGTH_SHORT).show(); 
    } 

    public void addPhoto(View view) { 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 

     if(extras != null) { 
      Bitmap imageBitmap = (Bitmap) extras.get("data"); 
      imageButton.setImageBitmap(imageBitmap); 
     } 
    } 
    } 

} 

Assurez-vous que vous avez ajouté ci-dessous uses-feature tag AndroidManifest.xml utiliser la fonction Camera:

<manifest ... > 
    <uses-feature android:name="android.hardware.camera" 
        android:required="true" /> 
    ....... 
    .................. 
</manifest> 

Espérons que cela aidera ~

+0

Que k vous FAT. Cela a aidé un peu, mais il remplace le bouton avec une très petite image (comme une icône) et je voudrais le faire comme une photo qui rentre dans le bouton. – Ventru