首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >只需在android中使用wifi即可获取当前位置

只需在android中使用wifi即可获取当前位置
EN

Stack Overflow用户
提问于 2016-01-06 18:03:55
回答 2查看 838关注 0票数 3

当我使用GpsProvider时,我得到了当前的location.But,只有当我使用wifi连接到wifi网络时,我才需要获得当前位置。我使用NetworProvider来实现它,但我不能

下面是我使用的代码

代码语言:javascript
运行
复制
    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);}  

我的许可如下。

代码语言:javascript
运行
复制
 <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"/>

谢谢您:)

EN

回答 2

Stack Overflow用户

发布于 2016-01-06 18:11:56

检查WiFi是否启用:-

代码语言:javascript
运行
复制
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled()){
//wifi is enabled
}
票数 2
EN

Stack Overflow用户

发布于 2016-01-06 18:17:25

ConnectivityManager

回答有关网络连接状态的查询的

类。它还会在网络连接发生变化时通知应用程序。通过调用Context.getSystemService(Context.CONNECTIVITY_SERVICE).获取此类的实例

TYPE_WIFI

WIFI数据连接。处于活动状态时,默认情况下,所有数据通信都将使用此网络类型的接口(它具有默认路由)。

您可以使用下面的逻辑

代码语言:javascript
运行
复制
ConnectivityManager connManagerObj = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo WifiObj = connManagerObj.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

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

将其添加到您的清单文件中。

代码语言:javascript
运行
复制
<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" />
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34630337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档