2012-04-26 110 views
4

我尝试在Android下为我的应用程序获取GPS位置失败。我想知道我可能做错了什么。到目前为止我尝试以下方法:Android GPS应用程序无法在模拟器上工作

以及许多其他人,但一切都是徒劳。

考虑到所有的解决方案,上述工作过一段或其他人,我会用这一个调试:

package my.namespace; 

import android.app.Activity; 
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 

public class HomeActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    LocationListener ll = new mylocationlistener(); 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 
    } 

    private class mylocationlistener implements LocationListener { 
    public void onLocationChanged(Location location) { 
     if (location != null) { 
     Log.d("LOCATION CHANGED", location.getLatitude() + ""); 
     Log.d("LOCATION CHANGED", location.getLongitude() + ""); 
     Toast.makeText(HomeActivity.this, 
      location.getLatitude() + "" + location.getLongitude(), 
      Toast.LENGTH_LONG).show(); 
     } 
    } 
    public void onProviderDisabled(String provider) { 
    } 
    public void onProviderEnabled(String provider) { 
    } 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 
    } 
} 

@override注释的3种方法onProviderDisabledonProviderEnabledonStatusChanged。我不得不删除它们,因为Eclipse给出了这些方法不覆盖超类的错误。

我在清单文件(ACCESS_FINE_LOCATIONACCESS_MOCK_LOCATIONACCESS_COARSE_LOCATIONINTERNET)中添加了权限。

有没有人有一个想法,我可能会做错什么?

编辑: 在模拟器中运行(Android 2.2的API 8)

回答

3

确保启用GPS当您测试您的应用程序。如果您同时使用NETWORK_PROVIDER和GPS_PROVIDER,它也会有所帮助。所以,当GPS不可用时,您仍然可以使用NETWORK_PROVIDER获取位置。

更新: 另外,如果您使用模拟器测试您的应用程序,请确保您从命令行或使用Eclipse模拟GPS修补程序。这里是一个关于如何做到这一点的stackoverflow问题的链接How to emulate GPS location in the Android Emulator?

+0

谢谢你的答复。我不认为我可以添加NETWORK_PROVIDER,因为我正在模拟器上进行测试。我已经将GPS_PROVIDER作为参数传递给requestLocationUpdates方法。 – gkris 2012-04-26 11:27:55

+0

意味着您正在emmulator中测试您的基于gps的应用程序? – MAC 2012-04-26 11:31:44

+0

是的,但如果你愿意,你可以使用这两个提供者。无论如何,如果你正在模拟器上测试它,你是否通过模拟位置修复?无论是从命令行还是从eclipse。因为在模拟器上,只有在模拟位置修复时,应用才会获得位置更新。 – binW 2012-04-26 11:31:45

相关问题