我在堆栈上发现了很多关于此的信息,但最后没有人这样做过。
一开始我添加到android清单:
<receiver android:name=".gps.GpsLocationReceiver">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
接下来我尝试在我的应用中添加大量代码。
一开始,我实现了我的活动LocationListner
根据这个:Detecting GPS on/off switch in Android phones
LocationListener应覆盖此方法:
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().matches("android.location.PROVIDERS_CHANGED"))
{
// react on GPS provider change action
}
}
但在我的应用中,LocationListner仅覆盖此方法:
@Override
public void onLocationChanged(Location location) {
}
这个androidstudio有什么问题? 我现在应该做什么?
答案 0 :(得分:0)
onReceive()
需要 BroadcastReceiver
, onLocationChanged() 是必需的,您可以在这里获取由纬度和经度决定的地理位置变化:
@Override
public void onLocationChanged(Location location) {
Long myLongitude = location.getLongitude();
Long myLatitude = location.getLatitude();
}
如果您在课堂上不需要此方法,请不要实施LocationListener
。
答案 1 :(得分:0)
onReceive()方法来自BroadcastReceiver类。您需要首先扩展BroadcastReceiver以覆盖此方法。
请按照以下步骤操作:
1.制作广播接收机课程
public class NameOfYourBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final LocationManager lM = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if (lM.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
// do something
} else {
// do something else
}
}
}
2。注册您的BroadcastReceiver。为此,将以下行添加到AndroidManifest.xml
<receiver android:name="com.yourpackage.NameOfYourBroadcastReceiver">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
</intent-filter>
</receiver>