2013-07-04 86 views
0

我有一個使用用戶位置的活動。這裏是我到目前爲止已經編寫的代碼:Android烤麪包沒有顯示

public class VolSaveLocation extends Activity implements LocationListener { 

    @SuppressLint("HandlerLeak") 
    Handler handler = new Handler() { 
     public void handleMessage(android.os.Message msg) { 
      if (msg.what == 0) { 
       useLocation();  
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.volsavelocaction); 

     LocationManager locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 

     TelephonyManager phoneManager = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); 
     String phoneNumber = phoneManager.getLine1Number(); 
     Toast.makeText(getApplicationContext(), phoneNumber, Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // TODO Auto-generated method stub 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     // TODO Auto-generated method stub 
     if (location != null) { 
      Toast.makeText(getApplicationContext(), "Location not null!", Toast.LENGTH_SHORT).show(); 
      Message msg = new Message(); 
      msg.what = 0; 
      msg.obj = location; 
      handler.sendMessage(msg); 
     } 
     else 
      Toast.makeText(getApplicationContext(), "Location is null!", Toast.LENGTH_SHORT).show(); 
    } 
} 

問題是,無論是在onLocationChanged方法顯示在祝酒詞中。我正在使用地理位置修改來更改位置。我已經實現了LocationListener的其他方法,但它們是空的。顯示電話號碼的吐司工作正常。有人可以幫我嗎?

+2

放一個記錄在您的「onLocationChanged」,看看它甚至得到調用。 –

+0

onLocationChanged每次都沒有100%的保證。 –

回答

0

一個suggetion:

選擇爲一個時間間隔中的合理值(requestLocationUpdates()的第二參數)。保持電池壽命也很重要。每個位置更新都需要GPS,WIFI,蜂窩和其他無線電的電源。

請選擇儘可能高的時間值。

0

上的OnCreate定義一樣的getLocation()的方法,並在該函數寫下面的代碼

locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);  
    Criteria criteria = new Criteria(); 
    provider = locationManager.getBestProvider(criteria, false); 
    if(provider!=null && !provider.equals("")){ 
     Location location = locationManager.getLastKnownLocation(provider);   
     locationManager.requestLocationUpdates(provider, 40000, 1, this); 
     if(location!=null) { 
      onLocationChanged(location); 
     } else { 

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

它顯示三個錯誤: 1)類型不匹配:無法從字符串轉換爲提供者(在getBestProvider行上) 2)LocationManager類型中的方法getLastKnownLocation(String)不適用於參數(Provider)和 )類型LocationManager中的requestLocationUpdates(String,long,float,LocationListener)方法不適用於參數(Provider,int,int, VolSaveLocation) 我認爲如果我們修復第一個錯誤,所有這些都將被修復。你能幫我在這裏嗎?我是Android的初學者。 –

+0

您爲提供商定義的wat數據類型? 並在onCreate部分定義getLocation()。 –

+0

我定義了getLocation並從onCreate方法中調用它。我只是宣佈提供者爲提供者。我不知道有不同的類型。 –