首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -如何检查GPS信号是否丢失

Android -如何检查GPS信号是否丢失
EN

Stack Overflow用户
提问于 2016-11-01 21:57:44
回答 1查看 835关注 0票数 1

我想找出如何检查GPS是否还有信号,我该怎么做呢?我在用:

代码语言:javascript
复制
locationManager.addGpsStatusListener(new MyGPSListener());

private class MyGPSListener implements GpsStatus.Listener
    {
        public void onGpsStatusChanged(int event)
        {
            switch (event) {
                case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
                    if (mLastLocation != null) {
                        isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
                    }

                    if (isGPSFix) { 
                        mHandler.obtainMessage(GPS_ENABLED).sendToTarget();
                    } else {
                        mHandler.obtainMessage(GPS_DISABLED).sendToTarget();
                    }

                    break;
                case GpsStatus.GPS_EVENT_FIRST_FIX:
                    isGPSFix = true;

                    break;
            }
        }
    }

但这不是解决办法,GPS信号在这里没有丢失。这只是“当设备不移动3秒=全球定位系统丢失”,但我希望事件的GPS是rly丢失,因为我使用这个在我的“汽车应用”.所以我需要知道我是否开车进了隧道,例如。

我在谷歌上搜索了一整天,我没有任何解决方案。它怎麽工作?为什么它不起作用?当android和其他应用程序知道的时候,我也想知道!

谢谢你的回答。

编辑:

我试着把这个和最新的速度结合起来,但是没有用.速度必须大于20公里/小时。如果我进入1公里/小时的隧道呢?没道理..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 01:46:03

代码语言:javascript
复制
xml:
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

onCreate:
NetState receiver = new NetState();
IntentFilter filter = new IntentFilter();

filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
this.registerReceiver(receiver, filter);
receiver.onReceive(this, null);

add class:
class NetState extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent arg1) {
        ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        NetworkInfo wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if(!gprs.isConnected() && !wifi.isConnected())
        {
            AlertDialog.Builder ab = new AlertDialog.Builder(context);
            ab.setMessage("please check network");
            ab.setPositiveButton("yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.dismiss();
                }
            }).show();

        }
        else{
            AlertDialog.Builder ab = new AlertDialog.Builder(context);
            ab.setMessage("Network connect succeed!");
            ab.setPositiveButton("yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.dismiss();
                }
            }).show();               

        }
    }
}

我希望这对你有帮助~

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40369289

复制
相关文章

相似问题

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