gpt4 book ai didi

android - onLocationChanged 尚未被调用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:56 34 4
gpt4 key购买 nike

我一直在尝试创建一个与 map 相关的 android 应用程序,但我意识到我的应用程序的 onLocationChanged 尚未被调用,因此 map 始终停留在默认区域(美国)。

我的代码:

public class MapMainActivity extends MapActivity 
implements OnClickListener, LocationListener {

MapView mapView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_main);

//reference
mapView = (MapView)findViewById(R.id.map_view);
mapView.setBuiltInZoomControls(true);
this.findViewById(R.id.btn_satellite).setOnClickListener(this);
this.findViewById(R.id.btn_street).setOnClickListener(this);

}//onCreate

@Override
protected void onResume() {
super.onResume();

Toast.makeText(this, "GPS tracking started",
Toast.LENGTH_SHORT).show();

// Start location updates; 5s/5m
LocationManager locManager = (LocationManager)getSystemService(
Context.LOCATION_SERVICE);
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
5000, 0, this);

Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = locManager.getBestProvider(crit, true);
Location loc = locManager.getLastKnownLocation(provider);

}//onResume

@Override
protected void onPause() {
super.onPause();

Toast.makeText(this, "GPS tracking stopped",
Toast.LENGTH_SHORT).show();

LocationManager locManager = (LocationManager)getSystemService(
Context.LOCATION_SERVICE);
locManager.removeUpdates(this);
}//onPause

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v == findViewById(R.id.btn_street))
{
mapView.setSatellite(false);
}//street view

else if (v == findViewById(R.id.btn_satellite))
{
mapView.setSatellite(true);
}
}//onClick

@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}//isRouteDisplayed

@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
double lat = location.getLatitude();
double lon = location.getLongitude();

TextView txtLat = (TextView)findViewById(R.id.txt_lat);
txtLat.setText(String.format("%.6f", lat));
TextView txtLon = (TextView)findViewById(R.id.txt_lon);
txtLon.setText(String.format("%.6f", lon));

MapView map = (MapView)findViewById(R.id.map_view);
map.getController().animateTo(new GeoPoint((int)(lat*1E6),//1000000),
(int)(lon*1E6)));
}//onLocationChanged

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
Toast.makeText(this, "GPS disabled",
Toast.LENGTH_SHORT).show();
}//onProviderDisabled

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
Toast.makeText(this, "GPS enabled",
Toast.LENGTH_SHORT).show();
}//onProviderEnabled

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

}//onStatusChanged


}//class

当我通过我的设备运行应用程序时我的整个日志猫 (16/12/2011)

D/InputTransport(5357): Input channel constructed: name='40baf680 Toast (client)', ashmemFd=54, receivePipeFd=57, sendPipeFd=58

I/MapActivity(5357): Handling network change notification:CONNECTED

E/MapActivity(5357): Couldn't get connection factory client

I/ViewRoot(5357): !@FINISH DRAWING : sg.edu.tp/sg.edu.tp.SIP_TestMapActivity

I/ViewRoot(5357): !@finishDrawing is completed : sg.edu.tp/sg.edu.tp.SIP_TestMapActivity

I/ViewRoot(5357): !@FINISH DRAWING : Toast

I/ViewRoot(5357): !@finishDrawing is completed : Toast

D/InputTransport(5357): Input channel destroyed: name='40baf680 Toast (client)', ashmemFd=54, receivePipeFd=57, sendPipeFd=58

list :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sg.edu.tp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".SIP_MLT_TestActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<uses-library android:name="com.google.android.maps" />
<activity android:name=".SIP_TestMapActivity"></activity>
<activity android:name=".SIP_TestDraw1Activity"></activity>
<activity android:name=".SIP_TestDraw2Activity"></activity>
</application>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

</manifest>

最佳答案

您是在四处走动还是坐着使用 USB 连接到您的开发机器并观看 logcat 时进行测试?

如果坐在开发机器上,我怀疑您无法按照您在调用 requestLocationUpdates 时请求的那样移动触发位置更改事件所需的 5 米

来自 API文档:。

If minDistance is greater than 0, a location will only be broadcast if the device moves by minDistance meters.

尝试将该调用中的最小距离参数减少到零,看看会发生什么。

locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000, 0, this);

除了测试之外,您可能不想将其保留为零。

如果这没有帮助,您可以在请求位置更新后,通过在 onResume 中执行类似的操作来尝试查看您的 GPS 是否正常工作:

Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(crit, true);
Location loc = lm.getLastKnownLocation(provider);

看看您是否获得了正确的位置信息。

关于android - onLocationChanged 尚未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8516404/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com