この問題に関する多くの投稿を見てきましたが、解決策を提供してくれるものはありませんでした。
GPS (または、最終的には他の有効なプロバイダー) を介してユーザーの位置を取得しようとしています。しかし、私は常にnullの場所を取得しています。私は地図を取得し、任意の場所を設定できますが、機能しないプロバイダーです。
MAPS キーを適切に設定し(正しいキーであることも確認しました)、必要なすべてのアクセス許可を設定しました ( android.permission.INTERNET
、android.permission.ACCESS_COARSE_LOCATION
、android.permission.ACCESS_FINE_LOCATION
)。
このコードで可能なすべてのプロバイダーを取得しようとしました:
List<String> providers = locManager.getAllProviders();
for (String provider : providers) {
printProvider(provider);
}
これは、すべてのプロバイダー (私の場合は 4 つ) が DummyLocationProviders であることを示しています。
エミュレーターではなく、電話でアプリを実行しようとしています(ただし、GPS を有効にしたエミュレーターでも試してみましたが、役に立ちませんでした)。
これは、場所を取得するために使用しているコードです (昨日も問題なく動作しました)。
//Get criteria
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
//Get best provider
String bestProvider = locManager.getBestProvider(criteria, false);
printProvider(bestProvider);
//get the current location (last known location) from the location manager
Location location = locManager.getLastKnownLocation(bestProvider);
//if location found display as a toast the current latitude and longitude
if (location != null) {
Toast.makeText(this, "Current location:\nLatitude: " + location.getLatitude() + "\n" + "Longitude: " + location.getLongitude(), Toast.LENGTH_LONG).show();
point = new GeoPoint((int) (location.getLatitude()*1E6),(int)(location.getLongitude() *1E6));
controller.animateTo(point);
} else {
Toast.makeText(this, "Cannot fetch current location!", Toast.LENGTH_LONG).show();
}
私のマニフェストファイル:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".activities.MainActivity"
android:label="@string/title_activity_main" >
<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=".activities.GoogleMapsActivity"
android:label="@string/title_activity_maps" >
</activity>
<activity
android:name=".activities.MyMapsActivity"
android:label="@string/title_activity_maps" >
</activity>
</application>
</manifest>