这就是事情。我使用了我在分离类中执行的相同功能,该功能仅包含针对gps的特定gps。虽然我必须说坐标值不正确,但它仍然有效。现在我试图在我的真实项目中实现相同的功能,但它无法正常工作。它确实检测到我是否在手机中启用或禁用了GPS,但是没有出现协调值。
代码,我做了两个班。 Froyo2Activity和MyLocationListener。 Froyo2Activity是仅扩展Activity的主要活动,MyLocationListener实现了LocationListener。为了更好地查看,这是我的代码。
public class Froyo2Activity extends Activity{
Spinner priorSpin, genderSpin;
ImageView femaleView, maleView;
Button submit, agePrev, ageNext, bpPrev, bpNext, pPrev, pNext, butLoc;
SeekBar seekAge, seekBP;
EditText ageEdit, bpEdit, pEdit, locEdit, fname, lname;
TextView tv;
String commandline="", ageString="", bpString="", pString="";
int age = 0, bp = 0, p = 0;
double latitude, longitude, altitude, pitch = 0;
private static final int REQUEST_CODE = 10;
private LocationManager locationManager;
private String provider;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_froyo2);
fname = (EditText) findViewById(R.id.editText1);
lname = (EditText) findViewById(R.id.editText2);
ageEdit = (EditText) findViewById(R.id.editText7);
pEdit = (EditText) findViewById(R.id.editText9);
locEdit = (EditText) findViewById(R.id.editText3);
femaleView = (ImageView)findViewById(R.id.femaleView);
maleView = (ImageView)findViewById(R.id.maleView);
priorSpin = (Spinner) findViewById(R.id.prior_spin);
genderSpin = (Spinner)findViewById(R.id.gender_spin);
tv = (TextView) findViewById(R.id.textView14);
//---set the GPS---
//Get the location manager
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
if(MyLocationListener.latitude>0)
{
latitude=MyLocationListener.latitude;
longitude=MyLocationListener.longitude;
tv.setText("Latitude: "+ Double.toString(latitude) +" Longitude: "+ Double.toString(longitude)+" Altitude:"+ Double.toString(pitch)+"");
}
else
{
tv.setText("Signal Not Available");
}
} else {
tv.setText("GPS is not turned on...");
}
//---end GPS---
这是MyLocationListener的代码
package com.example.froyo2;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.widget.TextView;
import android.widget.Toast;
public class MyLocationListener implements LocationListener {
public static double latitude;
public static double longitude;
public static double salah=90;
@Override
public void onLocationChanged(Location loc)
{
// loc.getLatitude();
// loc.getLongitude();
latitude=loc.getLatitude();
longitude=loc.getLongitude();
salah=1;
}
@Override
public void onProviderDisabled(String provider)
{
salah=2;
}
@Override
public void onProviderEnabled(String provider)
{
salah=3;
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
salah=4;
}
}
有谁知道如何解决这个问题。就像我之前说过的那样,当我用gps函数试用自己的类时;没有实现其他功能或活动的意思,特别是仅针对GPS功能测试的类,它确实有效 - 至少指出位置的数量。但是,当使用其他功能实现GPS时,它表示信号不可用(请参阅代码)。如果能够解决这个问题会很有帮助。
谢谢你提前。 (SaraBrown)
答案 0 :(得分:1)
使用以下代码:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
MINIMUM_TIME_BETWEEN_UPDATES,
MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, locationListener);
对于locationListener,你可以使用它(将它放在你的Froyo2Activity 中):
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the GPS location
// provider.
String message = String.format(
"New Location \n Longitude: %1$s \n Latitude: %2$s",
location.getLongitude(), location.getLatitude());
Toast.makeText(LbsGeocodingActivity.this, message,
Toast.LENGTH_LONG).show();
// Here you can set your Value of Textview
}
我在我的代码中使用了它,它运行得很好。
答案 1 :(得分:0)
我认为你需要更换
if(MyLocationListener.latitude>0)
与
if(mlocListener.latitude>0)
希望有所帮助
答案 2 :(得分:-1)
更改此行
if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
到
if (mlocManager.isProviderEnabled(locationManager.GPS_PROVIDER))
它会正常工作
答案 3 :(得分:-2)
有时GPS提供商不会工作。尝试使用网络提供商