from kivy.app import App
from kivy.uix.relativelayout import RelativeLayout
from jnius import autoclass
CurrentActivity = autoclass('org.kivy.android.PythonActivity').mActivity
view = CurrentActivity.getWindow().getDecorView()
view.setKeepScreenOn(True)
class Root(RelativeLayout):
def __init__(self):
super().__init__()
class SomeApp(App):
def build(self):
return Root()
SomeApp().run()
android.view.Window
์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ๋๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
CurrentActivity = autoclass('org.kivy.android.PythonActivity').mActivity
WindowManager = autoclass('android.view.WindowManager$LayoutParams')
CurrentActivity.getWindow().addFlags(WindowManager.FLAG_KEEP_SCREEN_ON)
Kivy 1.10.1
Python 3.6
12-15 16:48:21.692 18623 18646 I python : Traceback (most recent call last):
12-15 16:48:21.692 18623 18646 I python : WARNING:kivy:stderr: Traceback (most recent call last):
12-15 16:48:21.693 18623 18646 I python : File "main.py", line 20, in <module>
12-15 16:48:21.693 18623 18646 I python : WARNING:kivy:stderr: File "main.py", line 20, in <module>
12-15 16:48:21.694 18623 18646 I python : view.setKeepScreenOn(True)
12-15 16:48:21.694 18623 18646 I python : WARNING:kivy:stderr: view.setKeepScreenOn(True)
12-15 16:48:21.695 18623 18646 I python : File "jnius/jnius_export_class.pxi", line 734, in jnius.JavaMethod.__call__ (jnius/jnius.c:25894)
12-15 16:48:21.695 18623 18646 I python : WARNING:kivy:stderr: File "jnius/jnius_export_class.pxi", line 734, in jnius.JavaMethod.__call__ (jnius/jnius.c:25894)
12-15 16:48:21.697 18623 18646 I python : File "jnius/jnius_export_class.pxi", line 828, in jnius.JavaMethod.call_method (jnius/jnius.c:27082)
12-15 16:48:21.697 18623 18646 I python : WARNING:kivy:stderr: File "jnius/jnius_export_class.pxi", line 828, in jnius.JavaMethod.call_method (jnius/jnius.c:27082)
12-15 16:48:21.698 18623 18646 I python : File "jnius/jnius_utils.pxi", line 93, in jnius.check_exception (jnius/jnius.c:4012)
12-15 16:48:21.698 18623 18646 I python : WARNING:kivy:stderr: File "jnius/jnius_utils.pxi", line 93, in jnius.check_exception (jnius/jnius.c:4012)
12-15 16:48:21.699 18623 18646 I python : jnius.JavaException: JVM exception occurred: Only the original thread that created a view hierarchy can touch its views.
12-15 16:48:21.699 18623 18646 I python : WARNING:kivy:stderr: jnius.JavaException: JVM exception occurred: Only the original thread that created a view hierarchy can touch its views.
12-15 16:48:21.822 18623 18646 I python : Python for android ended.
12-15 16:48:21.830 18623 18623 V SDL : onWindowFocusChanged(): false
12-15 16:48:21.833 18623 18623 V PythonActivity: onPause()
12-15 16:48:21.833 18623 18623 V SDL : onPause()
12-15 16:48:21.833 18623 18623 V SDL : nativePause()
12-15 16:48:21.833 18623 18623 F libc : Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 18623 (ample.myaasdqpp)
์ด ์ค๋ฅ๋ ๊ธฐ๋ณธ์ ์ผ๋ก PyJNIus์ ์ ํ๋ฆฌ์ผ์ด์
์ด Android์ ๊ธฐ๋ณธ ๋์์ธ ๊ธฐ๋ณธ์ด ์๋ Thread
์์ ์คํ๋๊ณ ์์์ ์๋ฏธํฉ๋๋ค. ํ๋ฆฐ ์ ์์ผ๋ฉด ์ง์ ํด์ฃผ์ธ์.
๋ค์ํ ์ด๋ฒคํธ๋ฅผ ํด๋งํ๋ Kivy ๋ฉ์ธ ๋ฃจํ์ฒ๋ผ ์์ํด ๋ณด์ธ์. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ๋ถ์ด ํ๋ ค๊ณ ํ๋ ๊ฒ์ sleep(1)
์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก kivy.clock.Clock
์ฌ์ฉํ์ง ์๋ ํ Kivy์์ UI๋ฅผ ๊ณ ์ ํ์ง๋ง Android๊ฐ ํ๋ ๊ฒ์ ๊ทธ๋ฐ ์์
์ ํ์ฉํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ์ด ์์ ์ ๊ฐ์ด java.lang.Runnable
๋ฐ android.app.Activity.runOnUiThread
๋ฅผ ํตํด ๊ธฐ๋ณธ Thread
์์ ์ฝ๋๋ฅผ ๋ช
์์ ์ผ๋ก ์คํํด์ผ ํฉ๋๋ค.
๋๋ android.runnable.run_on_ui_thread
์ android
ํจํค์ง์์ ๋์์ ๊ฐ์ ธ์ฌ ์ ์์ง๋ง ์๊ตฌ ์ฌํญ์๋ ์ถ๊ฐํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ์ค๋ฅ๋ ๊ธฐ๋ณธ์ ์ผ๋ก PyJNIus์ ์ ํ๋ฆฌ์ผ์ด์ ์ด Android์ ๊ธฐ๋ณธ ๋์์ธ ๊ธฐ๋ณธ์ด ์๋
Thread
์์ ์คํ๋๊ณ ์์์ ์๋ฏธํฉ๋๋ค. ํ๋ฆฐ ์ ์์ผ๋ฉด ์ง์ ํด์ฃผ์ธ์.๋ค์ํ ์ด๋ฒคํธ๋ฅผ ํด๋งํ๋ Kivy ๋ฉ์ธ ๋ฃจํ์ฒ๋ผ ์์ํด ๋ณด์ธ์. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ๋ถ์ด ํ๋ ค๊ณ ํ๋ ๊ฒ์
sleep(1)
์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋กkivy.clock.Clock
์ฌ์ฉํ์ง ์๋ ํ Kivy์์ UI๋ฅผ ๊ณ ์ ํ์ง๋ง Android๊ฐ ํ๋ ๊ฒ์ ๊ทธ๋ฐ ์์ ์ ํ์ฉํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด ์์ ์ ๊ฐ์ดjava.lang.Runnable
๋ฐandroid.app.Activity.runOnUiThread
๋ฅผ ํตํด ๊ธฐ๋ณธThread
์์ ์ฝ๋๋ฅผ ๋ช ์์ ์ผ๋ก ์คํํด์ผ ํฉ๋๋ค.๋๋
android.runnable.run_on_ui_thread
์android
ํจํค์ง์์ ๋์์ ๊ฐ์ ธ์ฌ ์ ์์ง๋ง ์๊ตฌ ์ฌํญ์๋ ์ถ๊ฐํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค!