尝试添加方法来检查状态GPS

时间:2016-10-28 20:07:38

标签: java android google-maps

我在堆栈上发现了很多关于此的信息,但最后没有人这样做过。

一开始我添加到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有什么问题? 我现在应该做什么?

2 个答案:

答案 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>