我正在编写一个Android应用程序,并且有一个与FusedLocationApi.requestLocationUpdates()相关的奇怪行为,我在SO上搜索过,其他相关问题都没有解决我的问题。
显然,requestLocationUpdates不会一直触发onLocationChanged()方法;我之所以这样说是因为我在每次运行时都在模拟器上清理应用程序的数据,有时会触发onLocationChanged(),有时则不会(大多数情况下,如第二次运行应用程序而无需清理应用程序的数据)或者在制作用户数据后擦除ie)
下面你可以找到我的代码(来自pastebin的链接,我不想在这里创建任何视觉过载)
主要活动:http://pastebin.com/XiRrcR11
MapHandler:http://pastebin.com/HELnhaxy
另一个问题是,奇怪的是,如果我在方法displayLocation()中使用MapHandler中的匿名内部类,该应用程序可以正常工作,但是如果我使用扩展LocationListener的外部类,则应用程序的行为不正确
我知道SO中预期的问题级别很高,但我开始研究Android开发,这个问题让我睡不着觉
这是我的AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.trackit.app.track_it_v002">
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but you must specify either coarse or fine
location permissions for the 'MyLocation' functionality.
-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
Note that the API key is linked to the encryption key used to sign the APK.
You need a different API key for each encryption key, including the release key that is used to
sign the APK for publishing.
You can define the keys for the debug and release targets in src/debug/ and src/release/.
-->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
你们能帮我一把吗?
编辑:经过一些调试我发现requestLocationUpdates没有返回非null对象并且没有触发onLocationChanged(),任何人都知道为什么? = S答案 0 :(得分:0)
我遇到了这个问题。 mGoogleApiClient对象,需要在requestLocationUpdates时连接。这是通过从onConnected回调中请求LocationUpdates来解决的。
/*
* Called first time google client is connected
*/
@Override
public void onConnected(@Nullable Bundle bundle) {
Log.v(LOG_TAG,"DetectDrivingService - onConnected");
// Create
try {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
catch(SecurityException se){
}
}