我目前正在Android中测试gps位置(使用SDK Tools rev 21.0.1。我尝试了标准程序:
理论上,这应该将gps设置为。
但是以下迹象表明位置设置不正确:
1。当我访问maps.google.com或打开谷歌地图时,它总是抱怨无法确定我的位置,他们总是要求我打开wifi 。
2。似乎永远不会激活GPS - 状态栏上没有图标。
另外,我尝试了DDMS(已弃用,当然我也尝试过Monitor)。似乎什么也没发生。
我之前的链接指向: Location not being updated on new geo fix in android emulator
Android - Unable to get the gps location on the emulator
GPS on emulator doesn't get the geo fix - Android
但所有这些链接似乎没有帮助。 android项目页面上有一些bug报告: http://code.google.com/p/android/issues/detail?id=13046
但这是一个相当古老的问题,并没有达成最终解决方案。
我想知道是否有其他人遇到类似问题,请提供一些帮助。感谢。
答案 0 :(得分:1)
希望你会看到图标,它会起作用。我的工作。 APi 10级
package com.example.locationsddf;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
LocationManager lm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView tv = (TextView) findViewById(R.id.tv);
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location arg0) {
tv.setText("Latitude: "+arg0.getLatitude()+" \nLongitude: "+arg0.getLongitude());
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
的Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.locationsddf"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="5"
android:targetSdkVersion="10" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.locationsddf.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
当通知图标时,您只需通过lm.getLastKnowLocation
获取位置就可以了
答案 1 :(得分:0)
有时AVD本身存在问题。尝试切换到另一种CPU架构。我有类似的问题,通过在ARM和英特尔之间切换解决了这个问题。有时启用Google服务的AVD也有帮助
还可以在开发者选项中使用“允许模拟位置”
作为替代方案,您可以尝试此客户端: https://github.com/RomanTheLegend/Pokemon_NoGo/tree/master/Sources/PokemonNoGo 我写它玩Pokemons,但它适用于任何基于GPS的应用程序。它只是接受来自桌面客户端和模拟主系统GPS提供商的坐标 - LocationManager.GPS_PROVIDER
最后但并非最不重要:在AVD中,您可以重播.kml文件。有许多服务可以帮助您生成一个。或者只需安装“Lockito”并从Android生成假坐标