0

我正在尝试从 Android 手机捕获经度和纬度值。我能够在我的外部设备上显示值,但我无法在我的模拟器上显示它们并显示未找到的位置。请告诉我将值存储在文本文件,拜托,这是我的代码。我在资产文件夹中创建了文本文件。

public class MainActivity extends Activity implements LocationListener{

private final static String STORETEXT="storetext.txt";


LocationManager locationManager ;
String provider;
String value1;
String value2;



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

    // Getting LocationManager object
    locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);        

    // Creating an empty criteria object
    Criteria criteria = new Criteria();

    // Getting the name of the provider that meets the criteria
    provider = locationManager.getBestProvider(criteria, false);


    if(provider!=null && !provider.equals("")){

        // Get the location from the given provider 
        Location location = locationManager.getLastKnownLocation(provider);


        locationManager.requestLocationUpdates(provider, 20000, 1, this);


        if(location!=null)
            onLocationChanged(location);
        else
            Toast.makeText(getBaseContext(), "Location can't be retrieved", Toast.LENGTH_SHORT).show();

    }else{
        Toast.makeText(getBaseContext(), "No Provider Found", Toast.LENGTH_SHORT).show();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

@Override
public void onLocationChanged(Location location) {
    // Getting reference to TextView tv_longitude
    TextView tvLongitude = (TextView)findViewById(R.id.tv_longitude);

    // Getting reference to TextView tv_latitude
    TextView tvLatitude = (TextView)findViewById(R.id.tv_latitude);

    // Setting Current Longitude
    tvLongitude.setText("Longitude:" + location.getLongitude());

    // Setting Current Latitude
    tvLatitude.setText("Latitude:" + location.getLatitude() );

    value1 = tvLongitude.getText().toString();
    value2 = tvLatitude.getText().toString();

    saveClicked();




}

private void saveClicked() {



    try{
        OutputStreamWriter out=
                new OutputStreamWriter(openFileOutput(STORETEXT, 0));
        out.write(value1);
        out.write(value2);
        out.close();

        Toast
    .makeText(this, "The contents are saved in the file.", Toast.LENGTH_LONG)
    .show();

    }
    catch(Throwable t){
        Toast.makeText(this, "Exception: "+ t.toString(), Toast.LENGTH_LONG)
        .show();

    }
}

@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      
}
}
4

1 回答 1

2

在模拟器上,地理定位不起作用。要进行测试,您仍然可以注入地理修复

您不应该使用资产来存储这些数据,您activity.getApplicationContext().getCacheDir()getFilesDir().

然后,一旦数据存储在本地,您应该专注于使用休息服务将这些数据上传到您的服务器并将其记录到数据库中。

于 2012-10-13T09:26:45.620 回答