I want the application to send coordinates once it enters a specific area and will continually do that until it exit that area. My target area is a rectangle. I'm not that knowledgeable in communicating with a server. I just based my code from books and online sources. What do you mean by " it might be a good REST situation? (sorry i'm not familiar). I need the phone to send me the coordinates as frequent as possible. That's a requirement and yes the phone can be plugged in the car.
Thanks Kristopher for the time, comment and help. On Jan 11, 11:30 am, Kristopher Micinski <[email protected]> wrote: > You can check the coordinates, and see if they fit within some area, > right? I assume your 'target area' is some polygon, and you simply > check whether your user's point is inside it. Do you know how to > communicate with a server? You can read a Java networking tutorial, > open up a socket and do an http post, or rest, or whatever to > communicate with the server. (Since you're doing this I suppose you > already have one in mind, this sounds like it might be a good rest > situation.) > > By the way, it's probably not great to send the information as often > as possible, that sounds like a real nice way to kill the battery.. > Buuut, it sounds like in your particular situation you might assume > that the phone is plugged in (perhaps not a great assumption, but > whatever.) > > > > > > > > On Tue, Jan 10, 2012 at 8:59 PM, coollearner <[email protected]> wrote: > > I would like to share what i have prepared so far and at the same time > > ask for assistance and suggestions on the next coding steps needed. > > > Based from short and basic java and android training and online > > resources, I have come up with the following theoretical code that has > > the following objectives (theoretical because I didn’t test it yet): > > > explicitly select the GPS provider (GPS/cell/wifi) to know the phone’s > > location > > dislays the current location in a textview > > connects to a server via 3g > > sends the latitude, longitude and timestamp as frequently as possible > > to a server > > Below is the code that I prepared: > > > import android.app.Activity; > > import android.content.Context; > > import android.location.Criteria; > > import android.location.Location; > > import android.location.LocationListener; > > import android.location.LocationManager; > > import android.os.Bundle; > > import android.telephony.TelephonyManager; > > import android.util.Log; > > import android.widget.TextView; > > import java.io.IOException; > > import java.io.PrintWriter; > > import java.net.Socket; > > import java.net.UnknownHostException; > > > public class GpsActivity extends Activity { > > > private LocationManager lm; > > private LocationListener locationListener; > > public static TelephonyManager tm; > > public static TextView tv; > > public static Socket s; > > public static PrintWriter out; > > > /** > > * Called when the activity is first created. > > */ > > @Override > > public void onCreate(Bundle savedInstanceState) { > > super.onCreate(savedInstanceState); > > /** > > * retrieve a reference to provide access to information about the > > telephony services on the device > > */ > > tm = (TelephonyManager) > > getSystemService(Context.TELEPHONY_SERVICE); > > setContentView(R.layout.main); > > /** > > * retrieve a reference to provide access to the system location > > services > > */ > > lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); > > > /** > > * explicitly select the GPS provider, create a set of Criteria and > > let android choose the best provider available > > */ > > > Criteria criteria = new Criteria(); > > criteria.setAccuracy(Criteria.ACCURACY_FINE); > > criteria.setAltitudeRequired(false); > > criteria.setBearingRequired(false); > > criteria.setCostAllowed(true); > > criteria.setPowerRequirement(Criteria.POWER_LOW); > > String provider = lm.getBestProvider(criteria, true); > > /** > > * This method takes in four parameters: > > provider: The name of the provider with which you register > > minTime: The minimum time interval for notifications, in milliseconds. > > minDistance: The minimum distance interval for notifications, in > > meters. > > listener: An object whose onLocationChanged() method will be called > > for each location update. > > */ > > locationListener = new MyLocationListener(); > > lm.requestLocationUpdates(provider, 0, 0, locationListener); > > > tv = (TextView) findViewById(R.id.textView1); > > tv.setText("I currently have no Location Data."); > > > } > > > /** > > * Connects the Android Client to a given server > > * > > * @param name > > * The name of the remote server > > * @param port > > * Port number to connect to at the remote server. > > * @throws IOException > > * @throws UnknownHostException > > */ > > public static void connect(String name, int port) > > throws UnknownHostException, IOException > > { > > > s = new Socket(name, port); > > out = new PrintWriter(s.getOutputStream(), true); > > } > > > /** > > * Sends a string message to the server. > > * > > * @param msg > > * The message to be sent. > > * @throws IOException > > */ > > public static void send(String msg) throws IOException > > { > > if (!s.isClosed() && msg != null) > > { > > out.println(msg); > > if (msg.contains("CMD_QUIT")) > > { > > out.close(); > > s.close(); > > Log.i("ServerConnection", "Client Disconnected."); > > } > > } > > } > > > private class MyLocationListener implements LocationListener{ > > > @Override > > public void onLocationChanged(Location loc) { > > String txt = "Latitude:" + loc.getLatitude() + "/nLongitude:" > > + loc.getLongitude(); > > Log.i("GeoLocation", "My current location is:\n " + txt); > > tv.setText("My current location is:\n" + txt); > > String msg = loc.getLongitude() + "\n" + loc.getLatitude() + > > "\n" > > + loc.getTime(); > > > try > > { > > connect("IP address", 27960); > > send("CMD_HELLO"); > > send(msg); > > send("CMD_QUIT"); > > } catch (UnknownHostException e) > > { > > // TODO Auto-generated catch block > > e.printStackTrace(); > > } catch (IOException e) > > { > > // TODO Auto-generated catch block > > e.printStackTrace(); > > } > > } > > > @Override > > public void onProviderDisabled(String provider) { > > // TODO Auto-generated method stub > > > } > > > @Override > > public void onProviderEnabled(String provider) { > > // TODO Auto-generated method stub > > > } > > > @Override > > public void onStatusChanged(String provider, int status, Bundle > > extras) { > > // TODO Auto-generated method stub > > > } > > > } > > > PLEASE HELP > > > 1. Kindly comment if the code above will meet the four objectives > > given. > > 2. HOW CAN I MEET MY 5th objective ----- I want the android > > application to start to trigger connecting to server and sending the > > latitude and longitude only when the phone (being used in a car) is > > within a road area ( say an area 1km x 30m ). It is continuously > > listening to its location but will start sending to server once it > > enters the area and will continuously send and will stop only once it > > exit the area. > > > -- > > You received this message because you are subscribed to the Google > > Groups "Android Developers" group. > > To post to this group, send email to [email protected] > > To unsubscribe from this group, send email to > > [email protected] > > For more options, visit this group at > >http://groups.google.com/group/android-developers?hl=en -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

