在安卓设备上仅使用wifi获取当前位置

3

当我使用GpsProvider时,我可以获取当前位置。但是我需要只在使用wifi网络时获取当前位置。我尝试使用NetworProvider来实现它,但无法成功。
下面是我使用的代码:

    public static void requestSingleUpdate(final Context context,
        final LocationCallback callback) {

    final LocationManager locationManager = (LocationManager) context
            .getSystemService(Context.LOCATION_SERVICE);

    boolean isNetworkEnabled = locationManager
            .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    if (isNetworkEnabled) {
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_COARSE);

        locationManager.requestSingleUpdate(criteria,
                new LocationListener() {
                    @Override
                    public void onLocationChanged(Location location) {
                        callback.onNewLocationAvailable(location);
                    }

                    @Override
                    public void onStatusChanged(String provider,
                            int status, Bundle extras) {
                    }

                    @Override
                    public void onProviderEnabled(String provider) {
                    }

                    @Override
                    public void onProviderDisabled(String provider) {
                    }
                }, null);}  

我的权限如下所示。
 <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <!-- Network State Permissions -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />\
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission     android:name="android.permission.ACCESS_COARSE_LOCATION"/>

谢谢:)

请参考此链接:http://stackoverflow.com/questions/25574128/how-to-get-current-gps-location-both-online-or-offline-in-android - Mukesh Kalgude
谢谢您的及时回复,但是当我检查网络是否启用时,它总是返回false。 - sijo jose
2个回答

2

检查WiFi是否已开启:

WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled()){
//wifi is enabled
}

我已经连接上了WiFi,但是没有获取到位置信息; - sijo jose

2

连接管理器

该类回答有关网络连接状态的查询。它还在网络连接发生更改时通知应用程序。通过调用Context.getSystemService(Context.CONNECTIVITY_SERVICE) 获取此类的实例。

TYPE_WIFI

WIFI数据连接。当激活时,所有数据流量将默认使用此网络类型的接口(它具有默认路由)。

您可以使用以下逻辑

ConnectivityManager connManagerObj = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo WifiObj = connManagerObj.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (WifiObj.isConnected()) {
    //Add your Code
}

在你的清单文件中添加以下内容。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

即使连接了WiFi,我得到的isNetWorkEnable为false。 - sijo jose
1
@sijojose请看这里http://stackoverflow.com/questions/16577939/how-to-check-if-wifi-is-really-connected-in-android - IntelliJ Amiya
1
谢谢你的关心。 - sijo jose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接