android - ANDROID STUDIO 持久 wifi 扫描仪
问题描述
我目前正在开发 Android API 19 上的 wifi 扫描仪项目
我的问题是屏幕关闭时,大约 10 分钟后它停止扫描 wifi,当我打开设备时,扫描再次正确开始。
我无法消除深度睡眠:/
如何正确地进行持久的 wifi 扫描?
有人有建议吗??
谢谢你的帮助
解决方案
我是我设备上的 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 分钟后,设备关闭了我的应用程序:/
谢谢你的帮助
推荐阅读
- java - 出于某种原因,共享首选项默认为 true
- scala - 如何在 Intellij 的 Scala 中运行 Main 方法
- c# - 如何从另一个程序集将 DBContext 添加到服务
- c# - EF Core 数据为空
- c - 如何在 $PATH 中添加和删除名称?
- sql - Oracle:当一列中的值更改时选择行
- c - 使用 fwrite() 在 C 中使用 unsigned short 将二进制文件写入文件
- javascript - Javascript - if(...) 在 Firefox 和 Safari 中的评估不同
- javascript - 如何将具有多种状态的组件转换为反应功能
- php - 在php中用json填充dataModel