Created
January 1, 2015 21:07
-
-
Save BrianJVarley/cc2a05703aea7f69b50c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package ie.gmit.computing; | |
//import com.example.cameratest.R; | |
import java.io.File; | |
import java.io.IOException; | |
import java.text.SimpleDateFormat; | |
import java.util.Date; | |
import java.util.Locale; | |
import android.app.AlertDialog; | |
import android.content.Context; | |
import android.content.DialogInterface; | |
import android.content.Intent; | |
import android.graphics.Bitmap; | |
import android.graphics.BitmapFactory; | |
import android.graphics.drawable.BitmapDrawable; | |
import android.graphics.drawable.Drawable; | |
import android.location.Criteria; | |
import android.location.Location; | |
import android.location.LocationListener; | |
import android.location.LocationManager; | |
import android.media.ExifInterface; | |
import android.net.Uri; | |
import android.os.Bundle; | |
import android.os.Environment; | |
import android.provider.MediaStore; | |
import android.support.v7.app.ActionBarActivity; | |
import android.text.Editable; | |
import android.util.Log; | |
import android.view.Menu; | |
import android.view.MenuItem; | |
import android.view.View; | |
import android.view.View.OnClickListener; | |
import android.widget.Button; | |
import android.widget.EditText; | |
import android.widget.ImageView; | |
import android.widget.TextView; | |
import android.widget.Toast; | |
public class MainActivity extends ActionBarActivity implements OnClickListener,LocationListener { | |
private static final String TAG = "CallCamera"; | |
private static final int CAPTURE_IMAGE_ACTIVITY_REQ = 0; | |
Uri fileUri = null; | |
ImageView photoImage = null; | |
private TextView latituteField; | |
private TextView longitudeField; | |
private LocationManager locationManager; | |
private String provider; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
// TODO Auto-generated method stub | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
photoImage = (ImageView) findViewById(R.id.photo_image); | |
photoImage.setImageDrawable(null); | |
Button mClickButton1 = (Button)findViewById(R.id.cameraBtn); | |
mClickButton1.setOnClickListener(this); | |
Button mClickButton2 = (Button)findViewById(R.id.searchBtn); | |
mClickButton2.setOnClickListener(this); | |
Button mClickButton3 = (Button)findViewById(R.id.resBtn); | |
mClickButton3.setOnClickListener(this); | |
latituteField = (TextView) findViewById(R.id.latitude_text); | |
longitudeField = (TextView) findViewById(R.id.longitude_text); | |
// Get the location manager | |
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); | |
// Define the criteria how to select the locatioin provider -> use | |
// default | |
Criteria criteria = new Criteria(); | |
provider = locationManager.getBestProvider(criteria, false); | |
Location location = locationManager.getLastKnownLocation(provider); | |
// Initialize the location fields | |
if (location != null) { | |
System.out.println("Provider " + provider + " has been selected."); | |
onLocationChanged(location); | |
} else { | |
latituteField.setText("Location not available"); | |
longitudeField.setText("Location not available"); | |
} | |
} | |
//handle button clicks | |
public void onClick(View v) { | |
switch (v.getId()) { | |
case R.id.cameraBtn: { | |
// start camera intent | |
Toast.makeText(this, "camera clicked", Toast.LENGTH_SHORT).show(); | |
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); | |
try { | |
File file = getOutputPhotoFile(); | |
} catch (IOException e) { | |
// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} | |
try { | |
fileUri = Uri.fromFile(getOutputPhotoFile()); | |
} catch (IOException e) { | |
// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} | |
i.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); | |
startActivityForResult(i, CAPTURE_IMAGE_ACTIVITY_REQ ); | |
break; | |
} | |
case R.id.resBtn: { | |
// start camera intent | |
Toast.makeText(this, "result clicked", Toast.LENGTH_SHORT).show(); | |
Intent myIntentO = new Intent(MainActivity.this, SearchResult.class); | |
MainActivity.this.startActivity(myIntentO); | |
break; | |
} | |
case R.id.searchBtn: { | |
// search tree for matching debri | |
Toast.makeText(this, "search clicked", Toast.LENGTH_SHORT).show(); | |
Intent myIntent = new Intent(MainActivity.this, SearchTree.class); | |
MainActivity.this.startActivity(myIntent); | |
break; | |
} | |
} | |
} | |
public boolean onCreateOptionsMenu(Menu menu) { | |
getMenuInflater().inflate(R.menu.main, menu); | |
return true; | |
} | |
public boolean onOptionsItemSelected(MenuItem item) { | |
switch (item.getItemId()) { | |
case R.id.add: | |
Toast.makeText(this, "Add", Toast.LENGTH_SHORT).show(); | |
return true; | |
case R.id.delete: | |
Toast.makeText(this, "Delete", Toast.LENGTH_SHORT).show(); | |
return true; | |
case R.id.action_settings: | |
Toast.makeText(this, "Settings", Toast.LENGTH_SHORT).show(); | |
AlertDialog.Builder alert = new AlertDialog.Builder(this); | |
alert.setTitle("Generic Info"); | |
alert.setMessage("Ship Name"); | |
// Set an EditText view to get user input | |
final EditText input = new EditText(this); | |
alert.setView(input); | |
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { | |
public void onClick(DialogInterface dialog, int whichButton) { | |
Editable value = input.getText(); | |
// Do something with value! | |
} | |
}); | |
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { | |
public void onClick(DialogInterface dialog, int whichButton) { | |
// Canceled. | |
} | |
}); | |
alert.show(); | |
return true; | |
default: | |
return super.onOptionsItemSelected(item); | |
} | |
} | |
private File getOutputPhotoFile() throws IOException { | |
File directory = new File(Environment.getExternalStoragePublicDirectory( | |
Environment.DIRECTORY_PICTURES), getPackageName()); | |
if (!directory.exists()) { | |
if (!directory.mkdirs()) { | |
Log.e(TAG, "Failed to create storage directory."); | |
return null; | |
} | |
} | |
/* | |
String timeStamp = new SimpleDateFormat("yyyMMdd_HHmmss", Locale.ENGLISH).format(new Date()); | |
File exifVar = new File(directory.getPath(), "IMG_" + timeStamp + ".jpg"); | |
*/ | |
File[] files = directory.listFiles(); | |
if(files.length==0) { | |
// No images available | |
return new File("") ; | |
} | |
File newestFile = files[files.length-1]; | |
File exifVar = new File(directory.getPath() + File.separator + newestFile.getName()); | |
String mString = "Generic Text.."; | |
ExifInterface exif = new ExifInterface(exifVar.getAbsolutePath()); | |
exif.setAttribute("UserComment", mString); | |
exif.saveAttributes(); | |
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, | |
String.valueOf(latituteField.toString())); | |
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, | |
String.valueOf(longitudeField.toString())); | |
exif.saveAttributes(); | |
return exifVar; | |
} | |
protected void onActivityResult(int requestCode, int resultCode, Intent data) { | |
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQ) { | |
if (resultCode == RESULT_OK) { | |
Uri photoUri = null; | |
if (data == null) { | |
Toast.makeText(this, "Image saved successfully", | |
Toast.LENGTH_LONG).show(); | |
photoUri = fileUri; | |
} else { | |
photoUri = data.getData(); | |
Toast.makeText(this, "Image saved successfully in: " + data.getData(), | |
Toast.LENGTH_LONG).show(); | |
} | |
showPhoto(photoUri); | |
} else if (resultCode == RESULT_CANCELED) { | |
Toast.makeText(this, "Cancelled", Toast.LENGTH_SHORT).show(); | |
} else { | |
Toast.makeText(this, "Callout for image capture failed!", | |
Toast.LENGTH_LONG).show(); | |
} | |
} | |
} | |
private void showPhoto(Uri photoUri) { | |
String filePath = photoUri.getEncodedPath(); | |
File imageFile = new File(filePath); | |
if (imageFile.exists()){ | |
Drawable oldDrawable = photoImage.getDrawable(); | |
if (oldDrawable != null) { | |
((BitmapDrawable)oldDrawable).getBitmap().recycle(); | |
} | |
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath()); | |
BitmapDrawable drawable = new BitmapDrawable(this.getResources(), bitmap); | |
photoImage.setScaleType(ImageView.ScaleType.FIT_CENTER); | |
photoImage.setImageBitmap(Bitmap.createScaledBitmap(bitmap, 130, 110, false)); | |
} | |
} | |
/* Request updates at startup */ | |
@Override | |
protected void onResume() { | |
super.onResume(); | |
locationManager.requestLocationUpdates(provider, 400, 1, this); | |
} | |
/* Remove the locationlistener updates when Activity is paused */ | |
@Override | |
protected void onPause() { | |
super.onPause(); | |
locationManager.removeUpdates(this); | |
} | |
@Override | |
public void onLocationChanged(Location location) { | |
// TODO Auto-generated method stub | |
int lat = (int) (location.getLatitude()); | |
int lng = (int) (location.getLongitude()); | |
latituteField.setText("Lat: " + String.valueOf(lat)); | |
longitudeField.setText("Lon: " + String.valueOf(lng)); | |
} | |
@Override | |
public void onStatusChanged(String provider, int status, Bundle extras) { | |
// TODO Auto-generated method stub | |
} | |
@Override | |
public void onProviderEnabled(String provider) { | |
// TODO Auto-generated method stub | |
Toast.makeText(this, "Enabled new provider " + provider, | |
Toast.LENGTH_SHORT).show(); | |
} | |
@Override | |
public void onProviderDisabled(String provider) { | |
// TODO Auto-generated method stub | |
Toast.makeText(this, "Disabled provider " + provider, | |
Toast.LENGTH_SHORT).show(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment