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

Reply via email to