2011-10-24 13 views
1

私はNETWORK_PROVIDERを使用して自分の位置を特定しようとしています。私のアプリケーション(Eclipseとエミュレータのエミュレータ上で)を実行すると、私は常にプロバイダを無効として検出します。プロバイダがAndroidでLocationListenerで無効にされている

public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main); 

    // refresh button 
    this.b1 = (Button)findViewById(R.id.b1); 
    this.b1.setOnClickListener(this); 

    this.lm = (LocationManager)getSystemService(LOCATION_SERVICE); 
    String provider = LocationManager.NETWORK_PROVIDER; 
    Location location = this.lm.getLastKnownLocation(provider); 

    this.t1 = (TextView)findViewById(R.id.t1); 
    if (location != null) 
     this.t1.setText(location.toString()); 
    else 
     if (lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)==false) 
      this.t1.setText("Provider disabled"); 
     else 
      this.t1.setText("No location, please wait"); 

    int t = 5000; 
    int distance = 5; 
    lm.requestLocationUpdates(provider, t, distance, myLocationListener); 
} 

public void onClick(View view){ 
    Location location = this.lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
    if (location != null) 
     this.t1.setText(location.toString()); 
    else 
     this.t1.setText("Refreshed but no location"); 

} 

私は、[設定]> [場所]> [無線ネットワークを使用中にオプションが有効になっている、チェックを。

編集:コードNickTで述べたように修正されたが、ボタン

答えて

1

私はあなたが

if (!lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) 
    this.t1.setText("Provider disabled"); // always get this 

はあなたをしなかった書くためのものだと思うを押したときにまだ場所を受けていませんか?

有効にすると、「無効」と表示されます。

+0

私はそれが間違いだと思う。 – frayab

+0

愚かな私。ありがとうございました!しかし、もう1つの問題は、ボタンを押したときに場所を取得しないということです。最初の場所を取得するには通常どのくらいの時間がかかりますか? –

+0

それは信号の強さに依存するでしょう。おそらく、onLocationChanged()で場所を受け取ったときにテキストを設定した場合、その所要時間を知ることができます。 – NickT

関連する問題