Warum wird das Foto zweimal zum Server hochgeladen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Warum wird das Foto zweimal zum Server hochgeladen?

    Hallo,

    ich habe foglenden Code:


    Quellcode

    1. @Override
    2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    3. if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
    4. try {
    5. // We need to recyle unused bitmaps
    6. if (bitmap != null) {
    7. bitmap.recycle();
    8. }
    9. InputStream stream = null;
    10. try {
    11. Bitmap bitmap = null;
    12. stream = getContentResolver().openInputStream(
    13. data.getData());
    14. bitmap = BitmapFactory.decodeStream(stream);
    15. stream.close();
    16. this.UPLOAD_URL = Config.webSiteUrl + "?action=uploadFile&username=" + this.username + "&password=" + this.password + "&baustelleid=" + Fotos.this.baustelleid;
    17. System.out.println("xyy: " + this.UPLOAD_URL);
    18. bitmap = scaleDown(bitmap, Config.maxImageUploadSize, true);
    19. if(bitmap != null) {
    20. uploadImage(bitmap, this.UPLOAD_URL);
    21. }
    22. } catch (IOException e1) {
    23. System.out.println("Fehler 2");
    24. }
    25. } catch (Exception e) {
    26. System.out.println("Fehler 1");
    27. }
    28. if (requestCode == REQUEST_CODE2 && resultCode == Activity.RESULT_OK)
    29. try {
    30. // We need to recyle unused bitmaps
    31. if (bitmap != null) {
    32. bitmap.recycle();
    33. }
    34. try {
    35. bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoURI);
    36. this.UPLOAD_URL = Config.webSiteUrl + "?action=uploadFile&username=" + this.username + "&password=" + this.password + "&baustelleid=" + Fotos.this.baustelleid;
    37. bitmap = scaleDown(bitmap, Config.maxImageUploadSize, true);
    38. if(bitmap != null) {
    39. uploadImage(bitmap, this.UPLOAD_URL);
    40. }
    41. } catch (IOException e) {
    42. e.printStackTrace();
    43. }
    44. } catch (Exception e) {
    45. System.out.println("Fehler 1");
    46. }
    47. super.onActivityResult(requestCode, resultCode, data);
    48. }
    49. public static Bitmap scaleDown(Bitmap realImage, float maxImageSize,
    50. boolean filter) {
    51. float ratio = Math.min(
    52. (float) maxImageSize / realImage.getWidth(),
    53. (float) maxImageSize / realImage.getHeight());
    54. int width = Math.round((float) ratio * realImage.getWidth());
    55. int height = Math.round((float) ratio * realImage.getHeight());
    56. Bitmap newBitmap = Bitmap.createScaledBitmap(realImage, width,
    57. height, filter);
    58. return newBitmap;
    59. }
    60. public String getStringImage(Bitmap bmp){
    61. ByteArrayOutputStream baos = new ByteArrayOutputStream();
    62. bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    63. byte[] imageBytes = baos.toByteArray();
    64. String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
    65. return encodedImage;
    66. }
    67. public void onNoInternetConnection() {
    68. Dialog dialog = new Dialog(Fotos.this);
    69. dialog.setContentView(R.layout.dialog_no_internet);
    70. Button btn_refresh = (Button)dialog.findViewById(R.id.btn_yes);
    71. dialog.setCancelable(false);
    72. dialog.show();
    73. btn_refresh.setOnClickListener(new View.OnClickListener() {
    74. @Override
    75. public void onClick(View view) {
    76. Fotos.this.timerlogout.stopTimer();
    77. finish();
    78. startActivity(getIntent());
    79. }
    80. });
    81. }
    82. public void uploadImage(final Bitmap bitmap, String urlString) {
    83. //Showing the progress dialog
    84. final DelayedProgressDialog progressDialog = new DelayedProgressDialog();
    85. progressDialog.show(getSupportFragmentManager(), "tag");
    86. StringRequest stringRequest = new StringRequest(Request.Method.POST, urlString,
    87. new Response.Listener<String>() {
    88. @Override
    89. public void onResponse(String s) {
    90. //Disimissing the progress dialog
    91. //Showing toast message of the response
    92. progressDialog.cancel();
    93. //Toast.makeText(Fotos.this, s , Toast.LENGTH_LONG).show();
    94. System.out.println(s);
    95. zeigeFotosAn(Fotos.this.baustelleid);
    96. }
    97. },
    98. new Response.ErrorListener() {
    99. @Override
    100. public void onErrorResponse(VolleyError volleyError) {
    101. //Dismissing the progress dialog
    102. progressDialog.cancel();
    103. onNoInternetConnection();
    104. }
    105. }){
    106. @Override
    107. protected Map<String, String> getParams() throws AuthFailureError {
    108. //Converting Bitmap to String
    109. String image = getStringImage(bitmap);
    110. //Getting Image Name
    111. String name = "image";
    112. //Creating parameters
    113. Map<String,String> params = new Hashtable<String, String>();
    114. //Adding parameters
    115. params.put(KEY_IMAGE, image);
    116. params.put(KEY_NAME, name);
    117. //returning parameters
    118. return params;
    119. }
    120. };
    121. //Creating a Request Queue
    122. RequestQueue requestQueue = Volley.newRequestQueue(this);
    123. //Adding request to the queue
    124. requestQueue.add(stringRequest);
    125. }
    Alles anzeigen
    Dieser Code macht nichts anderes als folgendes:

    - Button1 wrid geklickt -> Man kann ein Foto schießen -> es wird hochgeladen (das passiert im REQUEST_CODE - Bereich)
    - Button2 wird geklickt -> Man kann aus der Gallerie ein Foto auswählen -> es wird hochgeladen (das passiert im REQUEST_CODE2 - Bereich)


    Hochladen tut das Script mit Volley.

    Mein Problem ist allerdings, dass auf manchen Geräten dasselbe Bild irgendwie 2x hochgeladen wird.

    Ich kann in meinem Code keinen Bereich erkennen, der zweimal ein Bild hochlädt.

    Was mache ich falsch?

    Komischerweise läuft es auf meinem BQ Handy super, auf dem Lenovo Tablet nicht.