0

ユーザーの場所 (自分の場所) の取得に問題があります。私のコードは

double lat;
double lng;
LocationManager locationManager;
String context = Context.LOCATION_SERVICE; 
locationManager = (LocationManager)getSystemService(context);
String provider = LocationManager.GPS_PROVIDER;
Location location = locationManager.getLastKnownLocation(provider);
if(!locationManager.isProviderEnabled(provider)){
 locationManager.setTestProviderEnabled(provider, true);
}
boolean enabled = locationManager.isProviderEnabled(provider);
if(enabled){
        Toast.makeText(LoginActivity.this,"provider enabled",Toast.LENGTH_LONG).show();
}
else{
    Toast.makeText(LoginActivity.this,"provider disabled",Toast.LENGTH_LONG).show();
}
if(location!=null){
  lat = location.getLatitude();
  lng = location.getLongitude();
  AlertDialog.Builder ab=new AlertDialog.Builder(LoginActivity.this);
  ab.setMessage(Html.fromHtml("<b><font color=#ff0000>Location" +"</font></b><br>"
            +location.toString()+"<br>Latitude: "+lat
                +"<br>Longitude "+lng));
  ab.setPositiveButton("ok",null );
  Toast.makeText(LoginActivity.this,"You are at     "+location.toString(),Toast.LENGTH_LONG).show();
}
else{
    Toast.makeText(LoginActivity.this,"Location not found",Toast.LENGTH_LONG).show();
} 

私の問題はnull、アプリケーション メッセージ プロバイダーが有効になっている間、場所を取得していることです。このコードに問題は見つかりませんでした。デバイスでもテストしましたが、プロバイダーが有効になっており、場所が見つからないことが示されています。

クラスに位置リスナーを実装していません。クラスに位置リスナーを実装する必要がありますか?

4

1 に答える 1

3

電話から最後に認識された場所のみを取得しています。これが null の場合、つまり最後の既知の場所が利用できない場合は、他の方法で場所を取得しようとしていません。

このガイドに従って、LocationListener を実装し、位置の更新を受信するように登録する必要があります: http://developer.android.com/guide/topics/location/obtaining-user-location.htmlユーザーの場所を取得し、それを Location オブジェクトの形式でアプリケーションに渡します。

于 2011-01-13T09:18:42.300 に答える