1

電話のwifiがオンまたはオフになっているかどうかを確認するAndroidアプリを作成しようとしています。私がやろうとしているのは、WiFiがオンになっている場合は白い色のBoxLayoutを表示し、オンになっていない場合はポップアップを表示することです。私は Android 開発に不慣れで、そのシンプルさと Python への愛情から、Kivy に夢中になりました。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 ファイルの権限を変更する必要がありますか? 今のところ、それは単なるインターネットです。

4

2 に答える 2

3

私のプロジェクトでは、この機能を使用しました(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

于 2016-03-11T15:25:25.367 に答える