【问题标题】:Android App to check if wifi is enabled or notAndroid 应用程序检查 wifi 是否启用
【发布时间】:2016-06-26 02:50:33
【问题描述】:

我一直在尝试创建一个 Android 应用来检查手机的 wifi 是否打开或关闭。 我想要做的是,如果 WiFi 开启,那么它会显示一个白色的 BoxLayout,如果它没有开启,那么它会显示一个弹出窗口。 我是 Android 开发的新手,我迷上了 Kivy,因为它的简单性和我对 Python 的热爱。 我尝试关注 Pyjnius 文档,但无法运行该应用程序。所以我把代码贴在这里:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.popup import Popup
from kivy.uix.button import Button
from kivy.lang import Builder
from jnius import autoclass

Builder.load_string('''
<WiFiENABLED>
    canvas.before:
        Color:
            rgb: 1, 1, 1
        Rectangle:
            pos: self.pos
            size: self.size

<WiFiDISABLED>
    BoxLayout:
        orientation: 'vertical'
        Label:
            text:"Wifi is turned off"
        Button:
            text:"OK"

<Box>
    Label:
        text: "WiFi Tester"
''')

class WiFiENABLED(BoxLayout):
    def wfenabled(self):
        pass

class WiFiDISABLED(Popup):
    def wfdisabled(self):
        pass

class WiFiStatus():
    def WiFi(self):
        WiFi_Status = autoclass('android.net.wifi.WiFiManager')
        WiFi = WiFi_Status.getSystemService(Context.WIFI_SERVICE)

        if WiFi.getWifiState() == WiFi.WIFI_STATE_ENABLED:
            return WiFiENABLED()

        elif WiFi.getWifiState() == WiFi.WIFI_STATE_DISABLED:
            return WiFiDISABLED()

class Box(BoxLayout):
    def b(self):
        return WiFiStatus()

class WF(App):
    def build(self):
        return Box()

if __name__ == "__main__":
    WF().run()

我应该对 builder.spec 文件中的权限进行任何更改吗?到目前为止,它只是互联网。

【问题讨论】:

标签: android python-2.7 kivy pyjnius


【解决方案1】:

在我的项目中,我使用了这个功能(WiFi和移动互联网):

from kivy.utils import platform
from jnius import autoclass


def check_connectivity():
    if platform != 'android':
        raise Exception('run me on android device')

    Activity = autoclass('android.app.Activity')
    PythonActivity = autoclass('org.renpy.android.PythonActivity')
    activity = PythonActivity.mActivity
    ConnectivityManager = autoclass('android.net.ConnectivityManager')

    con_mgr = activity.getSystemService(Activity.CONNECTIVITY_SERVICE)

    conn = con_mgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting()
    if conn:
        return True
    else:
        conn = con_mgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting()
        if conn:
            return True
        else:
            return False

如果互联网可用则返回True,否则返回False

【讨论】:

    【解决方案2】:

    这对我很有效:

    from jnius import autoclass
    
    activity = autoclass('org.kivy.android.PythonActivity').mActivity
    Context = autoclass('android.content.Context')
    ConnectivityManager = autoclass('android.net.ConnectivityManager')
    
    con_mgr = activity.getSystemService(Context.CONNECTIVITY_SERVICE)
    conn = con_mgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting()
    
        if conn:
            print("------------------True")
        else:
            conn = con_mgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting()
            if conn:
                print("------------------True")
            else:
                print("------------------False")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      相关资源
      最近更新 更多