Why does the camera not start when I launch my Android application with an updated version?

I created an Android app with version 2.1. When I launch my application with an updated version, for example, version 2.2 or more, the message β€œComplete closing” is displayed on the camera, or the camera starts, but it becomes stuck. My code is specified

public class CameraCapture extends MenuActivitySpecific { protected ImageView image; protected String _path; File sdImageMainDirectory; private static final int IMAGE_CAPTURE = 0; private static final int GALLERY_REQUEST = 1; protected boolean _taken = true; private Uri imageUri; protected static final String PHOTO_TAKEN = "photo_taken"; private Dialog dialog; private Handler imageUploadhandler, databaseHandler; DBAdapter db; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.cameracapturedimage); setLanguage(CameraCapture.this,"ja_JP"); db = new DBAdapter(this); startCameraActivity2(); imageUploadhandler = new Handler(); databaseHandler = new Handler(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menucapturedimage, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.backToHome: finish(); return true; case R.id.save: upload(); return true; case R.id.retakePicture: startCameraActivity2(); return true; default: return super.onOptionsItemSelected(item); } } public static void setLanguage(Context context, String languageToLoad) { Log.d("Message 1 ", "setting language"); Locale locale = new Locale(languageToLoad); //eg "sv" Locale.setDefault(locale); android.content.res.Configuration config = new android.content.res.Configuration(); config.locale = locale; context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics()); Log.d("Message 3: ", locale+" Language set"); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { try{ if (requestCode == IMAGE_CAPTURE) { if (resultCode == RESULT_OK) { Log.d("ANDRO_CAMERA", "Picture taken!!!"); ImageView image = (ImageView) findViewById(R.id.cameraImage); image.setImageURI(imageUri); } if (resultCode == RESULT_CANCELED) { Intent intent = new Intent(CameraCapture.this, Home.class); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); finish(); startActivity(intent); } } else if (requestCode == GALLERY_REQUEST) { if (resultCode == RESULT_OK) { imageUri = data.getData(); String selectedImagePath = getPath(imageUri); ImageView image = (ImageView) findViewById(R.id.cameraImage); image.setImageURI(imageUri); } if (resultCode == RESULT_CANCELED) { Intent intent = new Intent(CameraCapture.this, Home.class); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); finish(); startActivity(intent); } } } catch(Exception e) { Log.e("Error: 169 CameraCapture: ", e+" "); } } protected void startCameraActivity2() { try { if (Constants.fromGallery) { Intent intent = new Intent(); intent.setType("image/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult( Intent.createChooser(intent, "Select Picture"), GALLERY_REQUEST); } else { Log.d("ANDRO_CAMERA", "Starting camera on the phone..."); String fileName = "testphoto.jpg"; ContentValues values = new ContentValues(); values.put(MediaColumns.TITLE, fileName); values.put(ImageColumns.DESCRIPTION, "Image capture by camera"); values.put(MediaColumns.MIME_TYPE, "image/jpeg"); imageUri = getContentResolver().insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); startActivityForResult(intent, IMAGE_CAPTURE); } } catch (Exception e) { Log.e("Error: 174 CameraCapture: ", e + ""); } } public String getPath(Uri uri) { try{ String[] projection = { MediaColumns.DATA }; Cursor cursor = managedQuery(uri, projection, null, null, null); int column_index = cursor .getColumnIndexOrThrow(MediaColumns.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } catch(Exception e) { Log.e("Error: 219 CameraCapture: ", e+""); return null; } } public void upload() { try { boolean check = Utility.isNetworkAvailable(CameraCapture.this); // boolean check1 =isOnline(); if (check) { String abc = imageUri.toString(); Log.e("Image URI String ", abc); String newtime = Utility.getdate(); String accesskey = Utility.MD5_Hash(Constants.email + newtime + "moko"); Constants.ACCESS_KEY = accesskey; Constants.proc_date = newtime; imageUploadhandler.postDelayed(runImageUpload, 500); dialog = ProgressDialog.show(CameraCapture.this, "", "γ—γ°γ‚‰γγŠεΎ…γ‘γγ γ•γ„", true); dialog.setCancelable(true); } else { databaseHandler.postDelayed(runDatabaseImageSave, 500); dialog = ProgressDialog.show(CameraCapture.this, "", "γ—γ°γ‚‰γγŠεΎ…γ‘γγ γ•γ„", true); dialog.setCancelable(true); } } catch (Exception e) { dialog.cancel(); Toast.makeText(this, e + "", Toast.LENGTH_LONG).show(); } } public byte[] getBytes(InputStream inputStream) throws IOException { ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int len = 0; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } return byteBuffer.toByteArray(); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { if (savedInstanceState.getBoolean(CameraCapture.PHOTO_TAKEN)) { _taken = true; } } @Override protected void onSaveInstanceState(Bundle outState) { outState.putBoolean(CameraCapture.PHOTO_TAKEN, _taken); } public static void StoreImage(Context mContext, Uri imageLoc, File imageDir) { Bitmap bm = null; try { bm = MediaStore.Images.Media.getBitmap( mContext.getContentResolver(), imageLoc); FileOutputStream out = new FileOutputStream(imageDir); bm.compress(Bitmap.CompressFormat.JPEG, 100, out); Log.e("file dir", imageDir.toString()); bm.recycle(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } private final Runnable runImageUpload = new Runnable() { public void run() { ResponseFromServer response = Utility.upload(imageUri, CameraCapture.this); if (dialog.isShowing()) { dialog.dismiss(); } Log.i("Image Uploading status:", response.getStatus()+""); if (response != null) { if (response.getStatus().equalsIgnoreCase("OK")) { Toast.makeText(getApplicationContext(), "η”»εƒγ‚’δΏε­˜γ—γΎγ—γŸγ€‚", Toast.LENGTH_LONG).show(); finish(); Intent intent=new Intent(CameraCapture.this,AllProductActivityNew.class); startActivity(intent); } } else { new AlertDialog.Builder(CameraCapture.this) .setTitle("エラー") .setMessage("γƒ•γ‚‘γ‚€γƒ«ι€δΏ‘γ«ε€±ζ•—γ—γΎγ—γŸγ€‚") .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); return; } } }; private final Runnable runDatabaseImageSave = new Runnable() { public void run() { try { InputStream iStream = getContentResolver().openInputStream( imageUri); byte[] inputData = getBytes(iStream); db.open(); String stringUri = imageUri.toString(); String userMail = Constants.email; Log.e("Email: ", userMail + ""); boolean feedback = db.InsertImage(inputData, stringUri, userMail, 1); db.close(); if (dialog.isShowing()) { dialog.dismiss(); } if (feedback) { Toast.makeText(CameraCapture.this, "η”»εƒγ‚’δΏε­˜γ—γΎγ—γŸγ€‚", Toast.LENGTH_LONG).show(); finish(); } else { new AlertDialog.Builder(CameraCapture.this) .setTitle("エラー") .setMessage("γƒ•γ‚‘γ‚€γƒ«ι€δΏ‘γ«ε€±ζ•—γ—γΎγ—γŸγ€‚") .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); return; } } catch (Exception e) { Log.e("Error to upload Image to database: ", e + ""); } } }; private boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null && netInfo.isConnected()) { return true; } return false; } } 
+4
source share

All Articles