需要关于android应用程序开发的建议

时间:2012-03-09 06:41:02

标签: android google-maps gps

我目前正在开始我的最后一年项目。我正在做一个名为智能车队管理系统的项目,使用android操作系统。我需要从gps跟踪器获取位置数据,如intellitrac x1并在我的Android应用程序中显示。我对如何开始这个项目感到困惑。我希望能得到大家的指导。谢谢。

1 个答案:

答案 0 :(得分:0)

这是我用于我的应用程序的代码。我用它来获取用户的当前位置。

public class AndroidLocationActivity {    
        String provider;
                    public double latitude, longitude = 0;
                    CurrentPositionTask getCurrentLocation;
                    Location currentLocation;
                    LocationListener locationListener;
                    LocationManager locationManager;
                    private long time=0;

                    @Override
                    public void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.main);

                        try {
                            locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                            setCriteria();
                            currentLocation = AndroidLocationActivity.this.locationManager.getLastKnownLocation(provider);

                            if (currentLocation == null) {
                                currentLocation = new Location(provider);
                            }
                            time = currentLocation.getTime();

                            if (latitude == 0 && longitude == 0) {
                                latitude = currentLocation.getLatitude();
                                longitude = currentLocation.getLongitude();    
                            }

                        } catch (NullPointerException e) {
                            // TODO: handle exception
                            System.out.println("Null");
                            e.printStackTrace();
                        } 
                        catch (Exception e) {
                            // TODO: handle exception
                            e.printStackTrace();
                        }

                        runAsyncTask();    
                    }

                    @Override
                    protected void onDestroy() {
                        // TODO Auto-generated method stub
                        super.onDestroy();
                        locationManager.removeUpdates(locationListener);
                    }

                    public void setCriteria() {
                        Criteria criteria = new Criteria();
                        criteria.setAccuracy(Criteria.ACCURACY_FINE);
                        criteria.setAltitudeRequired(false);
                        criteria.setBearingRequired(false);
                        criteria.setCostAllowed(true);
                        criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
                        provider = locationManager.getBestProvider(criteria, true);
                        if (provider == null) {
                            provider = LocationManager.GPS_PROVIDER;
                        }
                    }    


                    public void runAsyncTask() {
                        // TODO Auto-generated method stub
                        if (getCurrentLocation == null) {
                            getCurrentLocation = new CurrentPositionTask();    
                        }

                        if (getCurrentLocation != null) {
                            getCurrentLocation.execute("Searching for Location");    
                        }
                    }

                    public boolean checkConnection()
                    {
                        //ARE WE CONNECTED TO THE NET

                        ConnectivityManager conMgr = (ConnectivityManager) getSystemService (AndroidLocationActivity.CONNECTIVITY_SERVICE);
                        if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable()&& conMgr.getActiveNetworkInfo().isConnected()) {
                            return true;
                        } else {
                            return false;
                        }
                    } 


                    private class CurrentPositionTask extends AsyncTask<String, Void, Void>
                    {
                        private ProgressDialog Dialog = new ProgressDialog(AndroidLocationActivity.this);
                        private boolean flag = true;

                        public CurrentPositionTask() {
                            locationListener = new MyLocationListener();
                        }

                        @Override
                        protected void onPreExecute() {
                            // TODO Auto-generated method stub
                            super.onPreExecute();
                            try {
                                if (checkConnection()) {
                                    Dialog.setTitle("Loading");
                                    Dialog.setMessage("Searching for Location");
                                    Dialog.show();
                                    locationManager.requestLocationUpdates(provider, 0, 0, locationListener);
                                }
                                else {
                                    Toast.makeText(getApplicationContext(), "Internet is Not Available", Toast.LENGTH_LONG).show();
                                }    
                            } catch (Exception e) {
                                // TODO: handle exception
                                e.printStackTrace();
                            }
                        }

                        @Override
                        protected Void doInBackground(String... params) {
                            // TODO Auto-generated method stub
                            while (flag) {
                                if (latitude !=0 && longitude != 0) {
                                    flag=false;
                                }
                            }
                            return null;
                        }

                        @Override
                        protected void onPostExecute(Void result) {
                            // TODO Auto-generated method stub
                            super.onPostExecute(result);
                            if (Dialog != null && Dialog.isShowing()) {
                                Dialog.dismiss();
                                Intent homeIntent = new Intent(AndroidLocationActivity.this.getApplicationContext(), nextactivityname.class);

从此处开始您的下一个活动。

homeIntent.putExtra("lat", latitude);
        homeIntent.putExtra("lng", longitude);

                            startActivity(homeIntent);
                            }
                            locationManager.removeUpdates(locationListener);
                        }
                    }

                    class MyLocationListener implements LocationListener {

                        @Override
                        public void onLocationChanged(Location location) {
                            // TODO Auto-generated method stub
                            if (location != null) {
                                latitude = location.getLatitude();
                                longitude = location.getLongitude();    
                            }
                        }

                        @Override
                        public void onProviderDisabled(String arg0) {
                            // TODO Auto-generated method stub
                            Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onProviderEnabled(String arg0) {
                            // TODO Auto-generated method stub
                            Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
                            // TODO Auto-generated method stub
                        }
                    }
    }

所以这样你可以在Android的GPS Provide的帮助下获得当前位置。希望这会有所帮助......