首页 > 解决方案 > ANDROID STUDIO 持久 wifi 扫描仪

问题描述

我目前正在开发 Android API 19 上的 wifi 扫描仪项目

我的问题是屏幕关闭时,大约 10 分钟后它停止扫描 wifi,当我打开设备时,扫描再次正确开始。

我无法消除深度睡眠:/

如何正确地进行持久的 wifi 扫描?

有人有建议吗??

谢谢你的帮助

标签: android

解决方案


我是我设备上的 root,这是我的服务后台扫描 wifi

安卓清单:

     <service android:name=".wifi" android:process=":my_service" android:enabled="true"  android:priority="999"  android:exported="true"  android:label="Preferences"/>

服务 WIFI

class scanner_wifi extends Service implements TextToSpeech.OnInitListener {

    private TextToSpeech tts;

    public void onCreate() {
        tts = new TextToSpeech(this, this);
        final WifiManager mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
        if(mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
            IntentFilter filter = new IntentFilter();
            filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
            registerReceiver(new BroadcastReceiver(){

                @Override
                public void onReceive(Context context, Intent intent) {

                    Log.e("WIFI_SCAN","NEW SCAN WIFI");
                    tts.speak("WIFI", TextToSpeech.QUEUE_FLUSH, null);

                    List<ScanResult> results = mWifiManager.getScanResults();


                    final int N = results.size();

                    for(int i=0; i < N; ++i) {
                        Log.e("WIFI_SCAN", "  BSSID       =" + results.get(i).BSSID);
                        Log.e("WIFI_SCAN", "  SSID        =" + results.get(i).SSID);
                        Log.e("WIFI_SCAN", "  Capabilities=" + results.get(i).capabilities);
                        Log.e("WIFI_SCAN", "  Frequency   =" + results.get(i).frequency);
                        Log.e("WIFI_SCAN", "  Level       =" + results.get(i).level);
                        Log.e("WIFI_SCAN", "---------------");


                    }
                }
            }, filter);
            mWifiManager.startScan();
        }
    }

    @Override
    public void onInit(int status) {
        if (status == TextToSpeech.SUCCESS) {

            int result = tts.setLanguage(Locale.FRENCH);

            if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                Log.e("WIFI_SCAN", "This Language is not supported");
            }
        } else {
            Log.e("WIFI_SCAN", "Initilization Failed!");
        }
    }

    public void onDestroy(){
        Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show();
        super.onDestroy();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

我的代码运行良好,但屏幕关闭 x 分钟后,设备关闭了我的应用程序:/

谢谢你的帮助


推荐阅读