0

私のポストが重複していても大変申し訳ありませんが、この問題の別のケースがあります。ImageViewでカメラからキャプチャした画像を表示したい私はそれを保存したり、私のJSONファイルにそれをアップロードし、私は写真を撮った後、それは私のコードでLog.i ("Error", "Maybe Here");カメラから写真を撮ってImageView Androidに表示

でエラーを停止していないが、ここでは、サムネイルImageViewの

に保存された画像カントは私のコードでだ、私は」私は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(); 
      } 
     } 
    } 

} 

答えて

0

あなたが宣言したマニフェストに以下のコードを置く必要があります。 saveInstanceStateにあなたのuriを保存し、onrestoreinstancestateでそれを復元してください。それは、

android:configChanges="orientation|keyboardHidden|screenSize" 
関連する問題