質問: new intent( settings.action_location_source_settings); mcontext.startactivity(intent); } }); // on pressing cancel button alertdialog.setnegativebutton("cancel", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int which) { dialog.cancel(); } }); // showing alert message alertdialog.show(); } @override public void onlocationchanged(location location) { } @override public void onproviderdisabled(string provider) { } @override public void onproviderenabled(string provider) { } @override public void onstatuschanged(string provider, int status, bundle extras) { } } これは私のandroidmanifest.xmlです<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.locationtests" android:versioncode="1" android:versionname="1.0" > <uses-permission android:name="android.permission.camera" /> <uses-permission android:name="android.permission.access_fine_location" /> <uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.internet"></uses-permission> <uses-permission android:name="android.permission.access_wifi_state" /> <uses-permission android:name="android.permission.access_network_state" /> <uses-permission android:name="android.permission.vibrate" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.location" android:required="true" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" /> <uses-sdk android:minsdkversion="8" android:targetsdkversion="17" /> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="com.example.locationtests.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> 実際にはgps測位はうまくいきますが、network測位はうまくいきません。移動している間、デバイスのgpsをオンにしても座標が変化し続けますが、network_providerをオフにして中継しても同じことは起こりません。
回答: onlocationchangedメソッドでコードを記述する必要があります。このメソッドは場所が変更されたときに呼び出されるからです 。すなわちgetlocationが呼び出された場合は、新しい場所を保存してそれを返す必要があります。onlocationchangedを使用しない場合は、常に古い場所になります。