Подключиться к точке доступа с помощью QPython?

У меня есть простая проблема с моим телефоном: когда я отключаюсь от точки доступа Wi-Fi, мой телефон не подключается автоматически, потому что он всегда думает, что Интернета нет. Это из-за моего брандмауэра. Я предполагаю, что телефоны Android пытаются пропинговать сервер, чтобы проверить, есть ли подключение к Интернету.

Итак, что я сейчас пытаюсь сделать, так это написать простой скрипт, который постоянно сканирует сети Wi-Fi, пока не найдет ту, к которой я подключался в прошлом.
Вероятно, это был бы очень простой скрипт, но Я просто не могу найти способ подключения к точке доступа.

import threading
import androidhelper
droid = androidhelper.Android()
knownAPs = ["home-wifi","workAP"]

def autoConnect():
    threading.Timer(5.0, autoConnect).start()
    droid.wifiStartScan()
    nearbyAPs = droid.wifiGetScanResults().result
    for i, curAP in enumerate(nearbyAPs):
        if curAP['ssid'] in knownAPs:
            # ?connect to a wifi?
autoConnect()

Я что-то упустил в документах? Есть идеи, как я могу это сделать?

Редактировать:
Якобы можно использовать библиотеку Kivy в QPython. Я не мог найти пример того, как это может быть выполнено, хотя. Но, может быть, проблему можно решить так?


person Forivin    schedule 29.11.2016    source источник
comment
Может быть, вы ищете wifiReconnect? Эта и некоторые другие функции, связанные с Wi-Fi, описаны в нижней части документа, который вы упомянули   -  person running.t    schedule 29.11.2016
comment
... просто подумай об этом. Мой телефон больше не подключается автоматически ни к одной точке доступа Wi-Fi. Я сомневаюсь, что повторное подключение может автоматически подключить меня к любой сети Wi-Fi, к которой я был подключен в прошлом.   -  person Forivin    schedule 29.11.2016


Ответы (1)


На сегодняшний день нет возможности указать, к какой сети подключаться в SL4A (который используется androidhelper).

Более того, цитата из страницы SL4A на Github:

SL4A больше не находится в активной разработке. Тем не менее, некоторые форки этого проекта могут быть.


В качестве замены вы можете использовать plyer (хотя я не уверен, что QPython предоставляет это). Существует действительно красивый пример использования plyer для управления Wi-Fi. Я почти уверен, что вы можете адаптировать его для ваших нужд.

Если QPython не поддерживает plyer (я надеюсь, что поддерживает), я рекомендую посмотреть python-for-android, созданный людьми из kivy, которые также поддерживают plyer. С его помощью созданы соответствующие приложения [1].

Это похоже на ответ только по ссылке и одобрение kivy... Хм.

person pradyunsg    schedule 07.12.2016
comment
Я читал, что QPython может использовать библиотеку Kivy. Я не мог найти никаких примеров, хотя. Любая идея, как это можно сделать? - person Forivin; 07.12.2016
comment
Попробуйте import plyer на QPython. Если это сработает, связанный пример станет отличной отправной точкой. - person pradyunsg; 07.12.2016
comment
Как мне вообще получить плайер? Я попробовал pip install plyer (кажется, работает, по крайней мере, у меня не было ошибок), а затем я использовал from plyer import wifi в своем сценарии. Результат: ImportError: cannot import wifi - person Forivin; 08.12.2016
comment
Согласно файлу Readme на Github, plyer не поддерживает Wi-Fi API для Android. - person Forivin; 08.12.2016