2017-09-23 6 views
-1

Je veux créer une application Android pour prendre des photos, puis nous pouvons faire un commentaire avec la éditer la vue texte et quand je clique sur le bouton envoyer, l'image et le commentaire apparaitront dans la base de données (afin que nous puissions utiliser un ordinateur portable pour voir les résultats de la base de données)Puis-je créer une application Android pour prendre des photos puis télécharger vers la base de données

+1

Oui, vous pouvez créer une telle application. –

+0

Comment démarrer? –

Répondre

0

Voici comment vous prenez une photo, puis le télécharger à une vue de l'image:

public void getPhoto() { 

    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(intent, 1); 

} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

    if (requestCode == 1) { 

     if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

      getPhoto(); 

     } 


    } 

} 

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

    if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 

     requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); 

    } else { 

     getPhoto(); 

    } 



} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == 1 && resultCode == RESULT_OK && data != null) { 

     Uri selectedImage = data.getData(); 

     try { 

      Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage); 

      ImageView imageView = (ImageView) findViewById(R.id.imageView); 
      imageView.setImageBitmap(bitmap); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

} 

pour enregistrer dans la base de données , vérifiez this.

0

Vous pouvez utiliser le code ci-dessous pour capturer l'image:

public void captureImage() { 
    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      requestPermissions(new String[]{ 
        android.Manifest.permission.CAMERA 
      }, 6); 
     } 
     return; 
    } 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if (intent.resolveActivity(getPackageManager()) != null) { 
     startActivityForResult(intent, CAMERA_REQUEST_CODE); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case 6: 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       captureImage(); 
      } 
    } 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    uploading.show(); 
    if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) { 
     bitmap = (Bitmap) data.getExtras().get("data"); 
    } else if (requestCode == GALLERY_INTENT && resultCode == RESULT_OK) { 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    if (bitmap != null) { 
     toStringImage(bitmap); //this function will convert image into Base64 string 
    } else { 
     uploading.dismiss(); 
    } 
} 

Vérifiez le même code sur GitHub à: captureImage

Maintenant, Pour télécharger cette image à la base de données:

  1. Convertissez l'image capturée en Base64 chaîne. (imageToString)
  2. Envoyer cette base64 chaîne à vos services Web PHP utilisant votre bibliothèque préférée.
  3. Au niveau du back-end, convertissez Base64 pour revenir à image et stockez l'image dans la base de données.
  4. Stockez emplacement (chemin d'accès complet ou lien) de l'image dans votre base de données MySQL pour récupérer l'image à l'avenir.

Vérifiez this answer pour télécharger l'image dans la base de données.

+0

J'ai créé mon propre mais il a montré une exception de pointeur nul –

+0

public String getStringImage (Bitmap bmp) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); bmp.compress (Bitmap.CompressFormat.JPEG, bitmap_size, baos); octet [] imageBytes = baos.toByteArray(); Chaîne encodedImage = Base64.encodeToString (imageBytes, Base64.DEFAULT); return encodedImage; } –

+0

@AmirullahAchmadNassardhi Vous obtiendrez une exception null pointeur si bitmap est null. Pouvez-vous me montrer comment vous obtenez (ou générez) votre bitmap? – Harshil