1
我試圖啓用位置偵聽器來提供信息,如果手機移動超過一定距離時複選框被選中。對於測試,如果我在10秒內移動超過1米,我只想將計數器增加1。Android:位置偵聽器
我能夠讓位置監聽器工作,並使複選框onclick監聽器工作。但是,我在試圖刪除位置偵聽器時沒有選中該框。另外,當我重新檢查盒子時,我得到了多個增量。以下是我的代碼。我從我的Class的OnCreate()方法調用testgps()方法。
如果您有任何建議,他們將不勝感激。
THX
private void testgps() {
final CheckBox gps_enb = (CheckBox) findViewById(R.id.checkBox_gps);
gps_enb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LocationManager loc = (LocationManager) getSystemService(LOCATION_SERVICE);
if (((CheckBox) v).isChecked()) {
long minTime = 10000;
float minDistance = 1;
loc.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime,minDistance, new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
TextView count = (TextView) findViewById(R.id.textView_GPS_Listener_debug);
int buffer = new Integer(count.getText().toString()).intValue() + 1;
StringBuilder count_up = new StringBuilder();
count_up.append(buffer);
count.setText(count_up);
}
});
Toast.makeText(QuizSettingsActivity.this, "True",
Toast.LENGTH_SHORT);
Toast.makeText(QuizSettingsActivity.this, "Selected", Toast.LENGTH_SHORT).show();
} else {
loc = null;
Toast.makeText(QuizSettingsActivity.this, "Not selected", Toast.LENGTH_SHORT).show();
}
}
});
嘿感謝您的幫助。這是我結束了。我挖了一些更多的非訪問修飾符。
私人無效testgps(){
final CheckBox gps_enb = (CheckBox) findViewById(R.id.checkBox_gps);//Checkbox to Enable GPS
final LocationManager loc = (LocationManager)getSystemService(LOCATION_SERVICE);//Declare location mgr
//Location Listner
final LocationListener loc_listener= new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
TextView count = (TextView) findViewById(R.id.textView_GPS_Listener_debug);
int buffer = new Integer(count.getText().toString()).intValue() + 1;
StringBuilder count_up = new StringBuilder();
count_up.append(buffer);
count.setText(count_up);
}
};
gps_enb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean checked = gps_enb.isChecked();
if (checked==true) {
long minTime = 10000;
float minDistance = 1;
loc.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime,minDistance, loc_listener);//Provide Location Updates
Toast.makeText(QuizSettingsActivity.this, "Selected", Toast.LENGTH_SHORT).show();
};
if (checked!=true){
loc.removeUpdates(loc_listener);
Toast.makeText(QuizSettingsActivity.this, "Not selected", Toast.LENGTH_SHORT).show();
}
}
});
嗨,感謝幫助。我挖入非訪問修飾符,並能夠得到它的工作:以上是我最終與: –