Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package co.fppc.ig;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.hardware.Camera;
- import android.hardware.Camera.PictureCallback;
- import android.hardware.Camera.ShutterCallback;
- import android.net.Uri;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.os.Environment;
- import android.util.Log;
- import android.view.SurfaceView;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup.LayoutParams;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.Button;
- import android.widget.FrameLayout;
- import android.widget.ImageButton;
- import com.google.android.gms.maps.model.LatLng;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import co.fppc.ig.database.model.TmpPhoto;
- import co.fppc.ig.database.model.User;
- import co.fppc.ig.library.GPSTracker;
- import co.fppc.ig.library.Helper;
- import co.fppc.ig.library.camera.Preview;
- // Mendeklarasikan Activity untuk pengambilan gambar kondisi bencana (kamera)
- public class CameraActivity extends Activity {
- private static final String TAG = "CameraActivity";
- Preview preview;
- Button buttonClick;
- Camera camera;
- private User user;
- Activity act;
- Context ctx;
- String dateTakenTmpPhoto;
- String tmpPhotoName;
- private Intent intent;
- private GPSTracker gps;
- private LatLng taggedCoordinate;
- private ImageButton imageButtonCapture;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- ctx = this;
- act = this;
- // Pada activity / halaman ini tidak ditampilkan title, karena digunakan untuk menampilkan kamera
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- setContentView(R.layout.activity_camera);
- // Mendeklarasikan intent untuk mengambil data yang dipassing melalui intent sebelumnya.
- intent = getIntent();
- if (intent != null) {
- if (intent.getSerializableExtra("USER_SESSION") != null) {
- user = (User) intent.getSerializableExtra("USER_SESSION");
- Log.e("_USER_ID_", String.valueOf(user.getId()));
- Log.e("_USER_EMAIL_", user.getEmail());
- Log.e("_USER_PASSWORD_", user.getPassword());
- }
- }
- // Menginstansiasi button untuk capture foto
- imageButtonCapture = (ImageButton) findViewById(R.id.image_button_capture);
- // Mendeklarasikan event dari tombol capture tersebut untuk mulai mengambil gambar/foto
- imageButtonCapture.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- camera.takePicture(shutterCallback, rawCallback, jpegCallback);
- }
- });
- // Mendeklarasikan class GPSTracker untuk mengambil posisi user sekarang
- gps = new GPSTracker(CameraActivity.this);
- // Check apakah fitur GPS pada smartphone diaktifkan?
- if(gps.canGetLocation()){
- double latitude = gps.getLatitude();
- double longitude = gps.getLongitude();
- // \n is for new line
- //Helper.toast(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude);
- taggedCoordinate = new LatLng(latitude, longitude);
- Log.d("_onLocationChanged_", "Lat: " + String.valueOf(String.format("%.8f", latitude)) + " Long: " + String.valueOf(String.format("%.8f", longitude)));
- } else{
- // can't get location
- // GPS or Network is not enabled
- // Ask user to enable GPS/network in settings
- gps.showSettingsAlert();
- }
- // Mendeklarasikan view untuk camera
- preview = new Preview(this, (SurfaceView)findViewById(R.id.surfaceView));
- preview.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- ((FrameLayout) findViewById(R.id.layout)).addView(preview);
- preview.setKeepScreenOn(true);
- /*
- preview.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- camera.takePicture(shutterCallback, rawCallback, jpegCallback);
- }
- });
- */
- Helper.toast(ctx, getString(R.string.take_photo_help));
- }
- // Ketika state onResume, mengambil kembali data user 'USER_SESSION'
- // Check apakah hardware camera mendukung
- @Override
- protected void onResume() {
- super.onResume();
- intent = getIntent();
- if (intent != null) {
- if (intent.getSerializableExtra("USER_SESSION") != null) {
- user = (User) intent.getSerializableExtra("USER_SESSION");
- Log.e("_USER_ID_", String.valueOf(user.getId()));
- Log.e("_USER_EMAIL_", user.getEmail());
- Log.e("_USER_PASSWORD_", user.getPassword());
- }
- }
- int numCams = Camera.getNumberOfCameras();
- if(numCams > 0){
- try{
- camera = Camera.open(0);
- camera.startPreview();
- preview.setCamera(camera);
- } catch (RuntimeException ex){
- Helper.toast(ctx, getString(R.string.camera_not_found));
- }
- }
- }
- @Override
- protected void onPause() {
- if(camera != null) {
- camera.stopPreview();
- preview.setCamera(null);
- camera.release();
- camera = null;
- }
- super.onPause();
- }
- private void resetCam() {
- camera.startPreview();
- preview.setCamera(camera);
- }
- // Me-refresh gallery smartphonr
- private void refreshGallery(File file) {
- Intent mediaScanIntent = new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
- mediaScanIntent.setData(Uri.fromFile(file));
- sendBroadcast(mediaScanIntent);
- }
- ShutterCallback shutterCallback = new ShutterCallback() {
- public void onShutter() {
- // Log.d(TAG, "onShutter'd");
- }
- };
- PictureCallback rawCallback = new PictureCallback() {
- public void onPictureTaken(byte[] data, Camera camera) {
- // Log.d(TAG, "onPictureTaken - raw");
- }
- };
- PictureCallback jpegCallback = new PictureCallback() {
- public void onPictureTaken(byte[] data, Camera camera) {
- new SaveImageTask().execute(data);
- resetCam();
- Log.d(TAG, "onPictureTaken - jpeg");
- }
- };
- // Inner class untuk menyimpan gambar / foto hasil lapang di ke server.
- private class SaveImageTask extends AsyncTask<byte[], Void, Void> {
- @Override
- protected Void doInBackground(byte[]... data) {
- FileOutputStream outStream = null;
- // Write to SD Card
- try {
- Log.d("DEBUG", Helper.getCurrentDateWIthFormat("yyyy-MM-dd HH:mm:ss:SSS"));
- File sdCard = Environment.getExternalStorageDirectory();
- File dir = new File(sdCard.getAbsolutePath() + "/" + BuildConfig.APPLICATION_ID);
- dir.mkdirs();
- dateTakenTmpPhoto = Helper.getCurrentDateWIthFormat("yyyy-MM-dd HH:mm:ss:SSS");
- tmpPhotoName = Helper.getCurrentDateWIthFormat("yyyy.MM.dd.HH.mm.ss.SSS");
- File outFile = new File(dir, tmpPhotoName + ".jpg");
- outStream = new FileOutputStream(outFile);
- outStream.write(data[0]);
- outStream.flush();
- outStream.close();
- Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length + " to " + outFile.getAbsolutePath());
- //Log.d("_USER_ID_", String.valueOf(user.getId()));
- refreshGallery(outFile);
- TmpPhoto tmpPhoto = new TmpPhoto();
- tmpPhoto.setUserId(user.getId());
- tmpPhoto.setPhotoLatitude(String.valueOf(String.format("%.8f", taggedCoordinate.latitude)));
- tmpPhoto.setPhotoLongitude(String.valueOf(String.format("%.8f", taggedCoordinate.longitude)));
- tmpPhoto.setPhotoCaption(null);
- tmpPhoto.setDateTakenPhoto(dateTakenTmpPhoto);
- tmpPhoto.setPhotoName(tmpPhotoName + ".jpg");
- // Jika berhasil maka kembali ke MainActivity untuk mengisi content dari incident
- Intent intent = new Intent(getApplicationContext(), MainActivity.class);
- intent.putExtra("TMP_PHOTO", tmpPhoto);
- intent.putExtra("USER_SESSION", user);
- startActivity(intent);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- }
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement