diff --git a/buildozer.spec b/buildozer.spec index 953fd3d..fd4820d 100644 --- a/buildozer.spec +++ b/buildozer.spec @@ -35,8 +35,9 @@ version = 1.0.1 # version.filename = %(source.dir)s/main.py # (list) Application requirements -# comma separated e.g. requirements = sqlite3,kivy -requirements = kivy,service_identity,pyparsing,appdirs,psutil,cffi,six,pycryptodome,attrs,hyperlink,idna,cryptography,automat,twisted==19.7.0,python3 +# comma separated e.g. requirements = sqlite3,kivy, +requirements = kivy,service_identity,pyparsing,appdirs,cffi,six,pycryptodome,attrs,hyperlink,idna,cryptography,automat,android,twisted==19.7.0,python3 +# requirements = kivy,python3 # requirements = incremental,kivy # there is an issue with incremental/twisted build... first you need to build only incremental and then twisted in second run @@ -89,6 +90,8 @@ android.presplash_color = #FFFFFF # (list) Permissions android.permissions = INTERNET, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE +android.apptheme = "@style/Theme.Translucent" + # (int) Target Android API, should be as high as possible. # android.api = 27 @@ -153,6 +156,8 @@ android.accept_sdk_license = True # bootstrap) #android.add_aars = +#android.bootstrap = webview + # (list) Gradle dependencies to add (currently works only with sdl2_gradle # bootstrap) #android.gradle_dependencies = @@ -227,6 +232,7 @@ p4a.local_recipes = ./recipes/ # (str) Bootstrap to use for android builds # p4a.bootstrap = sdl2 +# p4a.bootstrap = webview # (int) port number to specify an explicit --port= p4a argument (eg for bootstrap flask) #p4a.port = diff --git a/src/main.py b/src/main.py index 05d602b..b7b9bd0 100644 --- a/src/main.py +++ b/src/main.py @@ -1,17 +1,25 @@ # coding: utf8 __version__ = '0.2' +#------------------------------------------------------------------------------ + import kivy kivy.require('1.9.1') # replace with your current kivy version ! +#------------------------------------------------------------------------------ + from kivy.app import App from kivy.lang import Builder from kivy.utils import platform +from kivy.uix.widget import Widget +from kivy.clock import Clock -from android.permissions import request_permissions, Permission +from jnius import PythonJavaClass, java_method, autoclass -from jnius import autoclass +from android.permissions import request_permissions, Permission +from android.runnable import run_on_ui_thread +#------------------------------------------------------------------------------ SERVICE_NAME = u'{packagename}.Service{servicename}'.format( packagename=u'org.bitdust_io.bitdust', @@ -32,14 +40,48 @@ on_press: app.stop_service() ''' +#------------------------------------------------------------------------------ + +RootApp = None + +#------------------------------------------------------------------------------ + +class BitDustUI(Widget): + def __init__(self, **kwargs): + super(BitDustUI, self).__init__(**kwargs) + Clock.schedule_once(self.create_webview, 0) + + @run_on_ui_thread + def create_webview(self, *args, **kwargs): + print('BitDustUI.create_webview') + WebView = autoclass('android.webkit.WebView') + WebViewClient = autoclass('android.webkit.WebViewClient') + activity = autoclass('org.renpy.android.PythonActivity').mActivity + webview = WebView(activity) + settings = webview.getSettings() + settings.setJavaScriptEnabled(True) + settings.setUseWideViewPort(True) # enables viewport html meta tags + settings.setLoadWithOverviewMode(True) # uses viewport + settings.setSupportZoom(True) # enables zoom + settings.setBuiltInZoomControls(True) # enables zoom controls + wvc = WebViewClient() + webview.setWebViewClient(wvc) + activity.setContentView(webview) + webview.loadUrl('https://bitdust.io') + +#------------------------------------------------------------------------------ class BitDustApp(App): def build(self): print('BitDustApp.build') + global RootApp + RootApp = self self.icon = 'bitdust.png' self.service = None self.root = Builder.load_string(KV) + self.ui = BitDustUI() + self.root.add_widget(self.ui) return self.root def on_start(self): @@ -81,6 +123,7 @@ def request_app_permissions(self): ]) print('BitDustApp.request_app_permissions : %r' % ret) +#------------------------------------------------------------------------------ if __name__ == '__main__': BitDustApp().run()