0

bevor es mir leid tut, wenn mein Post vielleicht dupliziert wird, aber ich habe einen anderen Fall in diesem Problem, ich möchte ein Bild zeigen, das ich von der Kamera in ImageView und danach aufgenommen habe i speichern oder sie in meine jSON-Datei hochladen, aber nachdem ich das Bild aufzunehmen, wird es in Log.i ("Error", "Maybe Here");Nimm Picture From Camera und zeige es dem ImageView Android

keinen Fehler in meinem Code, aber das Bild kann nicht gespeichert in Miniaturimage

Hier mein Code gestoppt ist, i‘ m mit Asyntask

public class StoreTodoDisplayActivity extends AppCompatActivity { 
    public Context ctx; 
    Uri imgUri; 
    ActionBar actionBar; 
    public static CategoryData category_data_ar[]; 
    public static CategoryData category_data_ar2[]; 
    String targetUrl; 
    String path = Environment.getExternalStorageDirectory() 
      + "/DCIM/Camera/img11.jpg"; 
    public static final String PREFS_NAME = "MyPrefsFile"; 
    SharedPreferences settings; 
    RestData restData; 
    ImageData imgData; 
    public Uri mCapturedImageURI; 
    public String image_path = ""; 
    Toolbar toolbar; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.camera_display); 
     targetUrl = Config.getEndPointUrl(); 
     ctx = this.getApplicationContext(); 
     System.gc(); 

     set_Spinner(); 
     set_Spinner2(); 

     // Toolbar show 
     toolbar = (Toolbar) findViewById(R.id.actionbarCameraDisplay); 
     setSupportActionBar(toolbar); 
     final android.support.v7.app.ActionBar abar = getSupportActionBar(); 
     abar.setDisplayShowCustomEnabled(true); 
     abar.setDisplayShowTitleEnabled(false); 
     abar.setDisplayHomeAsUpEnabled(true); 
     abar.setHomeButtonEnabled(true); 
     // Back button pressed 
     toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       onBackPressed(); 
      } 
     }); 

     settings = getSharedPreferences(PREFS_NAME, 0); 
    } 


    @Override 
    public void onResume() { 
     if (!UserInfo.loginstatus) { 
      finish(); 
     } 
     super.onResume(); 
    } 

    public void get_pic(View view) { 
     String fileName = "temp.jpg"; 
     ContentValues values = new ContentValues(); 
     values.put(MediaStore.Images.Media.TITLE, fileName); 
     mCapturedImageURI = getContentResolver().insert(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 

     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 

     startActivityForResult(intent, 12345); 

    } 

    public void save_img(View view) { 
     EditText te = (EditText) findViewById(R.id.camera_display_txt); 
     String msg = te.getText().toString(); 

     Spinner sp = (Spinner) findViewById(R.id.spinner1); 
     int catid = (int) sp.getSelectedItemId(); 
     String cat = category_data_ar[catid].catid; 

     Spinner sp2 = (Spinner) findViewById(R.id.spinner2); 
     int catid2 = (int) sp2.getSelectedItemId(); 
     String cat2 = category_data_ar2[catid2].catid; 

     ImageUploader uploader = new ImageUploader("display", msg, cat, cat2); 
     uploader.execute(Config.getEndPointUrl() + "/uploadimage.json"); 

    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == 12345) { 
      if (resultCode == RESULT_OK) { 

       getimage getm = new getimage(); 
       getm.execute(); 

      } 
     } 
    } 

    public void set_Spinner2() { 
     Spinner sp = (Spinner) findViewById(R.id.spinner2); 
     sp.setVisibility(View.VISIBLE); 
     CatProductHelper helper = new CatProductHelper(ctx); 
     category_data_ar2 = helper.getCategories(); 
     String[] isidesc = new String[category_data_ar2.length]; 
     for (int k = 0; k < category_data_ar2.length; k++) { 
      isidesc[k] = category_data_ar2[k].catdesc; 
      Log.i("AndroidRuntime", "Desc -- " + category_data_ar2[k].catdesc); 
     } 

     ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(
       StoreTodoDisplayActivity.this, 
       android.R.layout.simple_spinner_item, isidesc); 
     spinnerArrayAdapter 
       .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     sp.setAdapter(spinnerArrayAdapter); 

    } 

    public void set_Spinner() { 
     // set list activity 
     Spinner sp = (Spinner) findViewById(R.id.spinner1); 
     category_data_ar = StoreInfo.storeDisplayCat; 
     try { 

      String[] isidesc = new String[category_data_ar.length]; 
      Log.i("toTry", "Normal"); 
      for (int k = 0; k < category_data_ar.length; k++) { 
       isidesc[k] = category_data_ar[k].catdesc; 
       Log.i("AndroidRuntime", "Desc -- " 
         + category_data_ar[k].catdesc); 
      } 

      ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(
        StoreTodoDisplayActivity.this, 
        android.R.layout.simple_spinner_item, isidesc); 
      spinnerArrayAdapter 
        .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      sp.setAdapter(spinnerArrayAdapter); 

     } catch (Exception e) { 
      Log.i("toCatch", "NULL EXCEPTION"); 
      DisplayCatHelper helperDisplayCat = new DisplayCatHelper(ctx); 
      CategoryData[] displayCat = helperDisplayCat.getCategories(); 
      String[] isidesc = new String[displayCat.length]; 
      for (int k = 0; k < displayCat.length; k++) { 
       isidesc[k] = displayCat[k].catdesc; 
       Log.i("AndroidRuntime", "Desc -- " + displayCat[k].catdesc); 
      } 

      ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this, 
        android.R.layout.simple_spinner_item, isidesc); 
      spinnerArrayAdapter 
        .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      sp.setAdapter(spinnerArrayAdapter); 
     } 

    } 

    private class ImageUploader extends AsyncTask<String, String, String> { 
     ProgressDialog dialog; 

     private String url; 
     private String cameraType; 
     private String cameraMsg; 
     private String cameraCat; 
     private String catproduct; 

     public ImageUploader(String type, String msg, String cat, String cat2) { 
      cameraType = type; 
      cameraMsg = msg; 
      cameraCat = cat; 
      catproduct = cat2; 
     } 

     @Override 
     protected void onPreExecute() { 
      dialog = ProgressDialog.show(StoreTodoDisplayActivity.this, "", 
        "Uploading...", false); 
      // none 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      url = params[0]; 
      Log.i("ncdebug", "upload image to: " + url); 
      try { 
       if (image_path.equals("")) { 
        Log.i("ncdebug", "bmp kosong!!!!"); 
       } else { 
        Log.i("ncdebug", "Ok bmp gak kosong, mari kirim"); 
        restData = new RestData(); 
        imgData = new ImageData(); 
        restData.setTitle("Display : " + StoreInfo.storename); 
        restData.setRequestMethod(RequestMethod.POST); 
        restData.setUrl(url); 
        imgData.setImageData(url, image_path, cameraMsg, cameraCat 
            + "-" + catproduct, UserInfo.username, 
          StoreInfo.storeid, cameraType, UserInfo.checkinid); 

        saveToDb(); 

        return "Success"; 
       } 

      } catch (Exception e) { 
       //saveToDb(); 
      } 
      return "Penyimpanan gagal, ulangi tahap pengambilan gambar"; 
     } 

     @Override 
     protected void onPostExecute(String Result) { 
      dialog.dismiss(); 
      if (Result.equals("Success")) { 
       Toast.makeText(ctx, "Data tersimpan", Toast.LENGTH_SHORT) 
         .show(); 
       // checked todo 
       String vVar = StoreInfo.storeid + "-" + UserInfo.username 
         + "-displaycam"; 
       SharedPreferences.Editor editor = settings.edit(); 
       editor.putBoolean(vVar, true); 
       editor.commit(); 

       Intent intent = new Intent(ctx, StoreTodoActivity.class); 
       startActivity(intent); 
       finish(); 
      } else { 
       Toast.makeText(ctx, Result, Toast.LENGTH_LONG) 
         .show(); 
      } 

     } 
    } 

    public void saveToDb() { 
     Log.i("eris", "connection failed so save to db"); 
     RestHelper helper = new RestHelper(ctx); 
     helper.insertRest(restData); 
     imgData.setRestId(helper.getRestId()); 
     Log.i("REST ID", helper.getRestId()); 
     ImageHelper imgHelper = new ImageHelper(ctx); 
     imgHelper.insertRest(imgData); 
    } 

    public class getimage extends AsyncTask<String, String, String> { 
     String orientation = ""; 
     Bitmap bitmap; 
     BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 

     @Override 
     protected String doInBackground(String... params) { 
      // TODO Auto-generated method stub 
//   Log.i("INI BACKGROUND", "LIHAT"); 
      try { 
       String[] projection = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = getContentResolver().query(mCapturedImageURI, projection, 
         null, null, null); 
       int column_index_data = cursor 
         .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
       cursor.moveToFirst(); 
       String capturedImageFilePath = cursor 
         .getString(column_index_data); 
       String parentPath = Environment.getExternalStorageDirectory() 
         + "/Nestle Confect"; 
       String filename = System.currentTimeMillis() + ".jpg"; 
       BitmapFactory.Options opts = new BitmapFactory.Options(); 
       opts.inSampleSize = 4; 
       Bitmap bmp = BitmapFactory.decodeFile(capturedImageFilePath, 
         opts); 
       ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
       bmp.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
       File file = new File(parentPath); 
       file.mkdir(); 
       try { 
        file.createNewFile(); 
        Log.i("absoulute path", file.getAbsolutePath()); 
        FileOutputStream fo = new FileOutputStream(file + "/" 
          + filename, true); 

        // 5 
        fo.write(bytes.toByteArray()); 
        fo.close(); 
        image_path = parentPath + "/" + filename; 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        image_path = capturedImageFilePath; 
       } 

       byte[] thumb = null; 
       try { 
        ExifInterface exif = new ExifInterface(
          capturedImageFilePath); 
        orientation = exif 
          .getAttribute(ExifInterface.TAG_ORIENTATION); 
        thumb = exif.getThumbnail(); 

       } catch (IOException e) { 

       } 

       if (thumb != null) { 
        Log.i("IMAGEVIEW", "THUMBNAIL"); 
        bitmap = BitmapFactory.decodeByteArray(thumb, 0, 
          thumb.length); 
       } else { 
        Log.i("IMAGEVIEW", "REALFILE"); 
        return "not fine"; 
       } 
       return "fine"; 
      } catch (Exception e) { 
       return "not fine"; 
      } 
     } 

     @Override 
     public void onPostExecute(String result) { 
      // PROBLEM HERE 
      Log.i("ERROR", "HERE MAYBE"); 
      if (result.equals("fine")) { 
       ImageView gambarHasil = (ImageView) findViewById(R.id.camera_display_img); 
       gambarHasil.setImageBitmap(bitmap); 
       if (!orientation.equals("1")) { 
        Log.i("ORIENTATION", orientation); 
        float angel = 0f; 
        if (orientation.equals("6")) { 
         angel = 90f; 
        } else if (orientation.equals("8")) { 
         angel = -90f; 
        } 
        Matrix matrix = new Matrix(); 
        gambarHasil.setScaleType(ScaleType.MATRIX); // required 
        matrix.postRotate((float) angel, gambarHasil.getDrawable() 
          .getBounds().width()/2, gambarHasil.getDrawable() 
          .getBounds().height()/2); 
        gambarHasil.setImageMatrix(matrix); 
       } 
      } else { 
       Toast.makeText(
         ctx, 
         "Error, Try To Take Picture Again", 
         Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 

} 

Antwort

0

Ich denke, Sie Die Aktivität wurde gerade neu gestartet. Sie müssen den folgenden Code in das Manifest einfügen, in dem Sie deklarieren. und speichern Sie Ihre URI in saveInstanceState und stellen Sie sie auf onrestoreinstancestate wieder her. es wird Ihr Problem

android:configChanges="orientation|keyboardHidden|screenSize"