Sunday 7 December 2014

Capture photo and save it into internal storage

1) create class

import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.rws.alarm.AlarmReceiver;
import com.rws.apputil.Constants;
import com.rws.ezyparkingalaram.R;
import com.rws.ezyparkingalaram.SplashScreen;
import com.rws.ezyparkingalaram.TopBarActivity;
import com.rws.viewfolders.ViewFoldersActivity;

public class HomeActivity extends TopBarActivity {
private LinearLayout lytSettings, lytViewFolder, lytCaptureTicket;
private String strMonthTitle;
protected Toast toast;
private static final int CAMERA_PIC_REQUEST = 1001;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.homeactivity);
SplashScreen.setFirstTime(false, this);

lytSettings = (LinearLayout) findViewById(R.id.lytSettings);
lytSettings.setOnClickListener(this);

lytViewFolder = (LinearLayout) findViewById(R.id.lytViewFolders);
lytViewFolder.setOnClickListener(this);

lytCaptureTicket = (LinearLayout) findViewById(R.id.lytCaptureTicket);
lytCaptureTicket.setOnClickListener(this);

Calendar cal = Calendar.getInstance();
SimpleDateFormat month_year = new SimpleDateFormat("MMMM yyyy");
strMonthTitle = month_year.format(cal.getTime());

// new TimeDialog(this).show();
}

@Override
public void onClick(View v) {
super.onClick(v);
switch (v.getId()) {
case R.id.lytSettings:
Intent mIntentSettings = new Intent(getBaseContext(),
SettingsActivity.class);
startActivity(mIntentSettings);
finish();
break;

case R.id.lytViewFolders:
Intent mIntentViewFolder = new Intent(getBaseContext(),
ViewFoldersActivity.class);
startActivity(mIntentViewFolder);
break;

case R.id.lytCaptureTicket:
Intent intent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_PIC_REQUEST);

final View toastView = getLayoutInflater().inflate(
R.layout.custom_toast,
(ViewGroup) findViewById(R.id.toastLayout));
ImageView imageView = (ImageView) toastView
.findViewById(R.id.image);
imageView.setImageResource(R.drawable.ic_info);

TextView textView = (TextView) toastView.findViewById(R.id.text);
textView.setText("Take a Clear photo of the Ticket");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
toast = new Toast(HomeActivity.this);
toast.setGravity(Gravity.TOP, 0, 100);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(toastView);
toast.show();
}
}, 2000);
break;
default:
break;
}
}

String file_path;

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, requestCode, data);
if (toast != null)
toast.cancel();

if (requestCode == CAMERA_PIC_REQUEST && requestCode != 0
&& data != null) {
try {

Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
String foler_path = strMonthTitle;

if (isAutoSaveEnable())
file_path = "Ticket_SAVE" + System.currentTimeMillis()
+ ".jpg";
else
file_path = "Ticket_NONE" + System.currentTimeMillis()
+ ".jpg";

String imagePath = saveToInternalSorage(thumbnail, foler_path,
file_path);

Intent mIntent = new Intent(this, ExpiryTimeActivity.class);
mIntent.putExtra(AlarmReceiver.IMAGE_FILE_PATH, imagePath);
startActivity(mIntent);
} catch (Exception e) {
e.printStackTrace();
}
}
}

private boolean isAutoSaveEnable() {
SharedPreferences mSPreferences = getSharedPreferences(
Constants.SHAREDPREFERENCE.SHAREDPREFERENCES, 0);
return mSPreferences.getBoolean(
Constants.SHAREDPREFERENCE.CHK_AUTOSAVE, false);
}

public String saveToInternalSorage(Bitmap bitmapImage, String folderPath,
String filename) {
File directory = getDir("images", Context.MODE_PRIVATE);
directory = new File(directory, folderPath);
if (!directory.isDirectory())
directory.mkdirs();
File mypath = new File(directory, filename);
try {
FileOutputStream fos = new FileOutputStream(mypath);
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
return mypath.getAbsolutePath();
}

}