Tôi đang làm luận án Thạc sĩ của mình tại thời điểm trên định vị WiFi và để kiểm tra các thuật toán của tôi, tôi cần thu thập một số dữ liệu.Có cách nào để kiểm soát rõ ràng khoảng quét WiFi trong Android không?
Để làm điều này, tôi đã viết một chương trình ngắn và rất đơn giản cho Android, chỉ cần thu thập RSSI cho tất cả các điểm truy cập có thể tìm thấy được mỗi lần quét và lưu chúng vào tệp. Tôi đã thiết lập một BroadcastReceiver
lắng nghe trên các sự kiện WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
và tôi sử dụng một Timer
, đây gọi là tim, để bắt đầu quét với một WifiManager
, gọi wifi như sau:
tim.schedule(new TimerTask(){
@Override
public void run(){
wifi.startScan();
}
}, 0, 1000);
Vấn đề tôi đang gặp bây giờ là các quét khởi xướng dường như không xảy ra mỗi giây ngay cả khi tôi thành công trong việc khởi tạo chúng và tất cả bây giờ và sau đó có quét khác bắt đầu từ một số ứng dụng khác được ghi lại là tốt.
Có cách nào dễ dàng để quét trên một khoảng thời gian đã định và không nhận được quét do một số ứng dụng khác khởi xướng không?
Toàn bộ ứng dụng có thể được tìm thấy trên https://github.com/while/RSSIMiner nếu ứng dụng trợ giúp theo bất kỳ cách nào.
Cảm ơn bạn đã phản hồi ngay cả khi đó không phải là tin tuyệt vời. Tôi sợ rằng đây là trường hợp. Tôi đã thử các ứng dụng trong một mối quan hệ Galaxy và Nexus 7 cả hai chạy jellybean (+) vì vậy không có may mắn có một trong hai. Vấn đề là mô hình của tôi giả định khoảng thời gian thường xuyên vì vậy tôi đoán tôi sẽ phải thay đổi nó để xử lý các khoảng quét không đồng nhất. – while
Điều kỳ lạ là nó quản lý để quét một nơi nào đó khoảng 1sec khoảng nếu thiết lập để 500ms vì vậy nó phải hỗ trợ nó phần cứng khôn ngoan. – while
Yea, như tôi đã đề xuất trong giải pháp đầu tiên - bạn chỉ nên chọn và sử dụng các kết quả được yêu cầu, không phải mọi kết quả bạn nhận được. Điều này sẽ giúp bạn khắc phục cả hai vấn đề. – Jong