mirror of
				https://github.com/bspeice/itcs4180
				synced 2025-11-03 18:00:37 -05:00 
			
		
		
		
	Added function to save images to storage and load them. Compass image
will now change to the location when you get close.
This commit is contained in:
		@ -13,7 +13,7 @@
 | 
			
		||||
        android:layout_weight="1" >
 | 
			
		||||
 | 
			
		||||
        <ImageView
 | 
			
		||||
            android:id="@+id/compassRose"
 | 
			
		||||
            android:id="@+id/compassRoseView"
 | 
			
		||||
            android:layout_width="fill_parent"
 | 
			
		||||
            android:layout_height="fill_parent"
 | 
			
		||||
            android:layout_centerHorizontal="true"
 | 
			
		||||
@ -30,6 +30,14 @@
 | 
			
		||||
            android:layout_weight="1"
 | 
			
		||||
            android:src="@drawable/arrow_up" />
 | 
			
		||||
 | 
			
		||||
        <ImageView
 | 
			
		||||
            android:id="@+id/searchImageView"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_centerHorizontal="true"
 | 
			
		||||
            android:layout_centerVertical="true"
 | 
			
		||||
            android:src="@drawable/ic_launcher" />
 | 
			
		||||
 | 
			
		||||
    </RelativeLayout>
 | 
			
		||||
 | 
			
		||||
    <Button
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										69
									
								
								UNCCScavenger/src/edu/uncc/scavenger/BitmapAccess.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								UNCCScavenger/src/edu/uncc/scavenger/BitmapAccess.java
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,69 @@
 | 
			
		||||
package edu.uncc.scavenger;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Bradlee Speice, Brandon Rodenmayer
 | 
			
		||||
 * ITIS 4180
 | 
			
		||||
 * UNCCScavenger (NinerFinder)
 | 
			
		||||
 * CompassActivity.java
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
//Reference: stackoverflow.com/questions/19978100/how-to-save-bitmap-on-internal-storage-download-from-internet
 | 
			
		||||
 | 
			
		||||
import java.io.FileInputStream;
 | 
			
		||||
import java.io.FileNotFoundException;
 | 
			
		||||
import java.io.FileOutputStream;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
import android.content.Context;
 | 
			
		||||
import android.graphics.Bitmap;
 | 
			
		||||
import android.graphics.BitmapFactory;
 | 
			
		||||
import android.util.Log;
 | 
			
		||||
 | 
			
		||||
public class BitmapAccess 
 | 
			
		||||
{
 | 
			
		||||
	public static Bitmap loadBitmap(Context context, String picName)
 | 
			
		||||
	{
 | 
			
		||||
		Bitmap b = null;
 | 
			
		||||
		FileInputStream fis;
 | 
			
		||||
		
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			fis = context.openFileInput(picName);
 | 
			
		||||
			b = BitmapFactory.decodeStream(fis);
 | 
			
		||||
			fis.close();
 | 
			
		||||
		}
 | 
			
		||||
		catch(FileNotFoundException e)
 | 
			
		||||
		{
 | 
			
		||||
			Log.d("BitmapAccess", "FileNotFound_Load");
 | 
			
		||||
		}
 | 
			
		||||
		catch(IOException e)
 | 
			
		||||
		{
 | 
			
		||||
			Log.d("BitmapAccess", "IOException_Load");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		return b;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public static boolean saveBitmap(Context context, Bitmap b, String picName)
 | 
			
		||||
	{
 | 
			
		||||
		boolean saved = false;
 | 
			
		||||
		FileOutputStream fos;
 | 
			
		||||
		
 | 
			
		||||
		try
 | 
			
		||||
		{
 | 
			
		||||
			fos = context.openFileOutput(picName, Context.MODE_PRIVATE);
 | 
			
		||||
			b.compress(Bitmap.CompressFormat.PNG, 100, fos);
 | 
			
		||||
			fos.close();
 | 
			
		||||
		}
 | 
			
		||||
		catch(FileNotFoundException e)
 | 
			
		||||
		{
 | 
			
		||||
			Log.d("BitmapAccess", "FileNotFound_Save");
 | 
			
		||||
		}
 | 
			
		||||
		catch(IOException e)
 | 
			
		||||
		{
 | 
			
		||||
			Log.d("BitmapAccess", "IOException_Save");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		return saved;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -11,8 +11,10 @@ package edu.uncc.scavenger;
 | 
			
		||||
 * stackoverflow.com/questions/5479753/using-orientation-sensor-to-point-towards-a-specific-location
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import edu.uncc.scavenger.rest.RestLocation;
 | 
			
		||||
import android.app.Activity;
 | 
			
		||||
import android.content.Context;
 | 
			
		||||
import android.graphics.Bitmap;
 | 
			
		||||
import android.hardware.Sensor;
 | 
			
		||||
import android.hardware.SensorEvent;
 | 
			
		||||
import android.hardware.SensorEventListener;
 | 
			
		||||
@ -26,10 +28,12 @@ import android.view.View;
 | 
			
		||||
import android.view.View.OnClickListener;
 | 
			
		||||
import android.widget.Button;
 | 
			
		||||
import android.widget.ImageView;
 | 
			
		||||
import android.widget.Toast;
 | 
			
		||||
 | 
			
		||||
public class CompassActivity extends Activity implements SensorEventListener
 | 
			
		||||
{
 | 
			
		||||
	ImageView compass, arrowView;
 | 
			
		||||
	final int SEARCH_PROXIMITY = 10;
 | 
			
		||||
	ImageView compassRoseView, arrowView, searchImageView;
 | 
			
		||||
	Button backButton;
 | 
			
		||||
	SensorManager sManager;
 | 
			
		||||
	Sensor aSensor, mSensor;
 | 
			
		||||
@ -43,25 +47,35 @@ public class CompassActivity extends Activity implements SensorEventListener
 | 
			
		||||
	LocationManager locationManager;
 | 
			
		||||
	DirectionListener locationListener;
 | 
			
		||||
	Location searchLocation;
 | 
			
		||||
	Location testLocation = new Location(LocationManager.NETWORK_PROVIDER);
 | 
			
		||||
	RestLocation restLocation;
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
		super.onCreate(savedInstanceState);
 | 
			
		||||
		setContentView(R.layout.activity_compass);
 | 
			
		||||
 | 
			
		||||
		restLocation = (RestLocation)(getIntent().getSerializableExtra("restLocation"));
 | 
			
		||||
		
 | 
			
		||||
		arrowView = (ImageView)findViewById(R.id.arrowView);
 | 
			
		||||
		compass = (ImageView)findViewById(R.id.compassRose);
 | 
			
		||||
		compassRoseView = (ImageView)findViewById(R.id.compassRoseView);
 | 
			
		||||
		searchImageView = (ImageView)findViewById(R.id.searchImageView);
 | 
			
		||||
		searchImageView.setVisibility(View.INVISIBLE);
 | 
			
		||||
		Bitmap b = BitmapAccess.loadBitmap(getApplicationContext(), restLocation.getName());
 | 
			
		||||
		if(b != null)
 | 
			
		||||
		{
 | 
			
		||||
			searchImageView.setImageBitmap(b);
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		/*Test Values 
 | 
			
		||||
		testLocation.setLatitude(35.30719258);//woodward eagle
 | 
			
		||||
		testLocation.setLongitude(-80.73505447);
 | 
			
		||||
		testLocation.setLatitude(35.310043);//Bottom of Student Union bridge
 | 
			
		||||
		testLocation.setLongitude(-80.733734);*/
 | 
			
		||||
		searchLocation.setLatitude(35.30719258);//woodward eagle
 | 
			
		||||
		searchLocation.setLongitude(-80.73505447);
 | 
			
		||||
		searchLocation = new Location(LocationManager.NETWORK_PROVIDER);
 | 
			
		||||
		searchLocation.setLatitude(35.310043);//Bottom of Student Union bridge
 | 
			
		||||
		searchLocation.setLongitude(-80.733734);*/
 | 
			
		||||
		
 | 
			
		||||
		searchLocation = new Location(LocationManager.NETWORK_PROVIDER);
 | 
			
		||||
		searchLocation.setLatitude(getIntent().getDoubleExtra("searchLat", 0)); 
 | 
			
		||||
		searchLocation.setLongitude(getIntent().getDoubleExtra("searchLong", 0));
 | 
			
		||||
		searchLocation.setLatitude(restLocation.getLocationLat()); 
 | 
			
		||||
		searchLocation.setLongitude(restLocation.getLocationLong());
 | 
			
		||||
		
 | 
			
		||||
		locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
 | 
			
		||||
		locationListener = new DirectionListener(searchLocation);
 | 
			
		||||
@ -79,6 +93,8 @@ public class CompassActivity extends Activity implements SensorEventListener
 | 
			
		||||
				finish();
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		
 | 
			
		||||
		Toast.makeText(getApplicationContext(), ""+searchLocation.getLatitude()+", "+searchLocation.getLongitude(), Toast.LENGTH_SHORT).show();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
@ -146,11 +162,21 @@ public class CompassActivity extends Activity implements SensorEventListener
 | 
			
		||||
		float rotateArrow = (float) (trueHeading - locationListener.getBearing());
 | 
			
		||||
		
 | 
			
		||||
		//Rotate compass and arrow. Rotations must be opposite to counteract device movement
 | 
			
		||||
		compass.setRotation((long)(-1 * trueHeading));
 | 
			
		||||
		compassRoseView.setRotation((long)(-1 * trueHeading));
 | 
			
		||||
		arrowView.setRotation((long)(-1 * rotateArrow));
 | 
			
		||||
		
 | 
			
		||||
		//TODO
 | 
			
		||||
		//If within 5 to 10 meters, display image of search
 | 
			
		||||
		if(locationListener.getDistance() < SEARCH_PROXIMITY)
 | 
			
		||||
		{
 | 
			
		||||
			arrowView.setVisibility(View.INVISIBLE);
 | 
			
		||||
			compassRoseView.setVisibility(View.INVISIBLE);
 | 
			
		||||
			searchImageView.setVisibility(View.VISIBLE);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			arrowView.setVisibility(View.VISIBLE);
 | 
			
		||||
			compassRoseView.setVisibility(View.VISIBLE);
 | 
			
		||||
			searchImageView.setVisibility(View.INVISIBLE);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,7 @@ import android.widget.BaseAdapter;
 | 
			
		||||
import android.widget.ImageView;
 | 
			
		||||
import android.widget.ListView;
 | 
			
		||||
import android.widget.TextView;
 | 
			
		||||
import android.widget.Toast;
 | 
			
		||||
import edu.uncc.scavenger.database.LocationDatabaseHelper;
 | 
			
		||||
import edu.uncc.scavenger.rest.LocationClient;
 | 
			
		||||
import edu.uncc.scavenger.rest.RestLocation;
 | 
			
		||||
@ -36,7 +37,7 @@ public class MainActivity extends Activity {
 | 
			
		||||
		super.onCreate(savedInstanceState);
 | 
			
		||||
		setContentView(R.layout.activity_main);
 | 
			
		||||
		
 | 
			
		||||
		/*Test Code
 | 
			
		||||
		/*Test Code for mock location
 | 
			
		||||
		RestLocation location = new RestLocation();
 | 
			
		||||
		location.setId(1);
 | 
			
		||||
		location.setName("Bridge");
 | 
			
		||||
@ -93,6 +94,7 @@ public class MainActivity extends Activity {
 | 
			
		||||
			}
 | 
			
		||||
		}.execute();
 | 
			
		||||
		
 | 
			
		||||
		//Toast.makeText(getApplicationContext(), ""+locations.get(0).getLocationImageURL(), Toast.LENGTH_SHORT).show();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
 | 
			
		||||
@ -102,8 +102,7 @@ public class SearchActivity extends Activity {
 | 
			
		||||
				if(lm.isProviderEnabled(LocationManager.GPS_PROVIDER))
 | 
			
		||||
				{
 | 
			
		||||
					intent = new Intent(getApplicationContext(), CompassActivity.class);
 | 
			
		||||
					intent.putExtra("searchLat", restLocation.getLocationLat());
 | 
			
		||||
					intent.putExtra("searchLong", restLocation.getLocationLong());
 | 
			
		||||
					intent.putExtra("restLocation", restLocation);
 | 
			
		||||
					startActivity(intent);
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
@ -132,7 +131,15 @@ public class SearchActivity extends Activity {
 | 
			
		||||
		});
 | 
			
		||||
		
 | 
			
		||||
		//Toast.makeText(getApplicationContext(), restLocation.getLocationImageURL(), Toast.LENGTH_SHORT).show();
 | 
			
		||||
		new ImageDownloader().execute(restLocation.getLocationImageURL());
 | 
			
		||||
		Bitmap locationPicture = BitmapAccess.loadBitmap(getApplicationContext(), restLocation.getName());
 | 
			
		||||
		if(locationPicture != null)
 | 
			
		||||
		{
 | 
			
		||||
			locationImage.setImageBitmap(locationPicture);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			new ImageDownloader().execute(restLocation.getLocationImageURL());
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
@ -202,6 +209,7 @@ public class SearchActivity extends Activity {
 | 
			
		||||
			if(result!=null)
 | 
			
		||||
			{
 | 
			
		||||
				locationImage.setImageBitmap(result);
 | 
			
		||||
				BitmapAccess.saveBitmap(getApplicationContext(), result, restLocation.getName());
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user