如何通过单击按钮获取用户的GPS坐标?

时间:2011-07-04 04:01:31

标签: android gps android-maps

你好我在这里遇到问题

我有一个用于我的观点数据库的添加和编辑表单 它有两个用于坐标的EditText,用于经度和纬度 它有一个按钮来获取当前坐标 如果我单击按钮,两个EditTexts填充坐标 并且用户可以继续插入或编辑数据

我的代码返回java.nullPointerException,我不知道为什么......

这是我的代码:

btn_getkoor.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                try{

                    LocationListener gpsLocation = new MyLocationListener();
                    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, gpsLocation); //new MyLocationListener());
                    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

                    final TextView error_text = (TextView) findViewById(R.id.error_text);

                    if (location != null) {

                        EditText et_longitude = (EditText) findViewById(R.id.et_longitude);
                        EditText et_latitude = (EditText) findViewById(R.id.et_latitude);

                        et_longitude.setText(""+location.getLongitude());   // longitude textview
                        et_latitude.setText(""+location.getLatitude());     //latitude textview

                        locationManager.removeUpdates((LocationListener) location);
                        locationManager = null;

                    }else{
                        toastkeun("Terjadi Kesalahan dalam pengambilan koordinat");             //toast function
                        error_text.setText("Terjadi Kesalahan dalam pengambilan koordinat");    //textview for showing errors
                    }
                }catch(Exception e){
                    toastkeun(e.toString());
                }

            }
        });

任何解决方案?

我已经设置了清单文件FYI

2 个答案:

答案 0 :(得分:0)

很难从您的代码中说出:如果您还没有这样做,请输入以下代码:

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);     

答案 1 :(得分:0)

     LocationManager locationManager;
    String bestProvider;
    String LOCATION_SERVICE="location" ; 
    locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        //criteria.setAccuracy();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);  // More accurate, GPS fix.
        bestProvider = locationManager.getBestProvider(criteria,true);
    location location = locationManager.getLastKnownLocation(bestProvider);
if (location != null) {

                        EditText et_longitude = (EditText) findViewById(R.id.et_longitude);
                        EditText et_latitude = (EditText) findViewById(R.id.et_latitude);

                        et_longitude.setText(""+location.getLongitude());   // longitude textview
                        et_latitude.setText(""+location.getLatitude());     //latitude textview

                       // locationManager.removeUpdates((LocationListener) location);
                        locationManager = null;

                    }else{
                        toastkeun("Terjadi Kesalahan dalam pengambilan koordinat");             //toast function
                        error_text.setText("Terjadi Kesalahan dalam pengambilan koordinat");    //textview for showing errors
                    }
相关问题