簡體   English   中英

Android - 如何檢查GPS信號是否丟失

[英]Android - How to check if GPS signal was lost

我正在試圖找到如何檢查GPS是否還有信號,我該怎么辦呢? 我正在使用:

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丟失”,但我希望GPS的事件很糟糕,因為我在我的“汽車應用程序”中使用這個...所以我需要知道我是否開車例如,進入隧道。

我正在谷歌搜索一整天,我沒有任何解決方案。 它是如何工作的? 為什么不起作用? 當android和其他應用程序知道它時,我也想知道它!

謝謝你的回答。

編輯:

我試着將它與最新的速度相結合,但它沒用......速度必須大於20公里/小時......如果我以1公里/小時的速度進入隧道怎么辦? 這個不成立...

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();               

        }
    }
}

我希望它對你有所幫助〜

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM