2011-01-13 12 views
0

ユーザーの場所(自分の場所)を取得する際に問題があります。私のコードはAndroidでユーザーの場所を表示

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としての位置を取得しています。このコードでは問題は見つかりませんでした。私もデバイスでそれをテストしました、それはプロバイダが有効であり、場所が見つからないことを示しています。

私はクラス内にロケーションリスナーを実装していません。 自分のクラスにロケーションリスナーを実装する必要がありますか?

答えて

3

あなたは電話から最後の既知の場所を取得しています。最後の既知の場所がない場合はnullですが、他の方法で場所を取得しようとしていません。

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

+0

あなたのヒントのためのPichありがとう私は私のコードで位置のリスナーを追加して、それはうまく動作し、位置を示すが、私はエミュレータで動作しません。私はあなたの場所のListnerがデバイス上で正常に動作するときAVDはシャットダウンを取得 –

+0

あなたはようこそ。受け入れられた答えをマークすることを忘れないでください。さもなければ、質問は答えられないままになります。 –

関連する問題