
Pythonã§Androidã¢ããªäœæããŠã¿ã #8 ããã¯ã¢ããæ©èœè©³çް
ããã«ã¡ã¯ãRcatã§ãã
ååãã£ãšã®æãã§ããœã³ã³ã§ãã¹ããŒããã©ã³ã§ããã¡ã€ã«ã®éä¿¡ãè¡ãããšãããŸã§ãããŸããã
ä»åã¯ããã¯ã¢ãããšããããšã§ããã¡ã€ã«ã®éä¿¡æ¹æ³ãå·®åã®æ€çŽ¢æ¹æ³ãªã©ãèããŠããããšæããŸãã
æ¬ã·ãªãŒãºã¯ãã¡ã
ãã¡ã€ã«ã®ååšãã§ãã¯
ãã¡ã€ã«æ å ±ã®ãªã¹ãã«ã€ããŠ
ãŸãã¯ããã¯ã¢ãããå¹ççã«è¡ãããããã¡ã€ã«ã®ååšãã§ãã¯ãè¡ããŸãã
å
·äœçã«ã¯ããã§ã«åããã¡ã€ã«ããããã©ãããå€å®ãããã®æ¬¡ã«æŽæ°æ¥æãåããã©ããã確èªããŸãã
ãã¡ã€ã«ã«å€æŽãããå Žåã¯ãæ°ããããŒã¿ã§äžæžãããããã§ãªãå Žåã¯ã¹ãããããããšã§å¹çãäžããŸãã
ãŸããããã¯ã¢ããå
ãããªããªã£ãããŒã¿ã«é¢ããŠã¯å·®éåã§å·®åãåºããŠåé€ããŸãã
ãã©ãŒããããšããŠã¯æ¬¡ã®ããã«èããŠããŸãã
ãã®ãããªåœ¢ã§ç¢ºèªãè¡ãããšæããŸãã1ä»¶ãã€ç¢ºèªãè¡ã£ãŠãããã®ã§ãããã¬ã¹ãã³ã¹ãæ¿é
ã«ãªãããšãé¿ãããããŸãšããŠãããŸãã
ãã¡ã€ã«æç¡ãã§ãã¯ãã©ãŒããã(JSON)
{
"FileName":{
"id":ãã¡ã€ã«ID,
"mtime":æŽæ°æ¥æ,
"kind":ãã¡ã€ã«/ãã©ã«ã
}
}ãšããããã§ãœãŒã¹ããã¡ã
ããŒã¿å®¹éã軜ãããããã«ã絶察ãã¹ãéãã®ã§ã¯ãªãã©ãã®ãã©ã«ãããšããæ
å ±ãšãã¡ã€ã«åã®ãªã¹ããæããŠããŸãã
ããããããšã§ããµãŒããŒåŽã§ãã©ã«ããšååããã£ã€ããã°ãã¡ã€ã«ãã¹ã«ãªãããã§ããã
ãŸããåãã¡ã€ã«ããšã«ããã€ãæ
å ±ãæã£ãŠããŸãã
ç¹ã«å€§äºãªã®ã¯mtimeã§ãããã¯ãã¡ã€ã«ã®æŽæ°æ¥æã衚ããŸãã
ãµãŒããŒã¯ãã¡ã€ã«ãä¿åããŸãããå³å¯ãªåŠçã§èšãã°ç©ºã®ãã¡ã€ã«ãäœæããŠãããã«åä¿¡ãããã€ããªãŒãæžã蟌ãã§ããã€ãŸããæŽæ°æ¥æããã®ã¿ã€ãã³ã°ã«ãªã£ãŠããŸããšããããã§ããã
ããããä»åã¯ããã¯ã¢ãããç®çãªã®ã§ããã®ãããã®æ
å ±ã¯ä¿æããŠããã ããªããšå°ããŸãããšããããã§ãæŽæ°æ¥æã®æ
å ±ãªã©ãéã£ãŠããããã§ããã

ãã¡ã€ã«ã®æ¢çŽ¢æ¹æ³ã«ã€ããŠ
ä»åã¯æ¬¡ã®ãããªæ¹æ³ã§ãã¡ã€ã«ã®æ¢çŽ¢ãè¡ããŸãã
ãŸãèšå®ããããã©ã«ããŒãã«ãŒããã£ã¬ã¯ããªãŒãšããŠæ±ããŸãã
ãã®ã«ãŒããã£ã¬ã¯ããªã®äžã®å
šãŠã®ãã£ã¬ã¯ããªãäžçªæåã®é¢æ°ã§æ€çŽ¢ããããã«å¯ŸããŠã«ãŒãããããŠãããŸãã
äžã€äžã€ã®ãã©ã«ãã«å
¥ã£ãŠååž°çã«æ€çŽ¢ãå®è¡ããŠãè¯ãã£ãã®ã§ãããã¡ãã£ãšè€éã«ãªãããã ã£ãã®ã§ãglobã®ååž°æ€çŽ¢ã§ãã©ã«ãã¯äžæ°ã«æŽãåºãããšã«ããŸããã
ãããŠãåãã©ã«ãããšã«å
ã»ã©ç޹ä»ããäžèº«ã®ããŒã¿ãªã¹ããäœæãããµãŒããŒã«éä¿¡ããŸãã
ãµãŒããŒããã¯å¿
èŠãªããŒã¿ã®ãªã¹ããè¿ãããã®ã§ãããã䜿ã£ãŠãã¡ã€ã«ã®ã¢ããããŒãã«é²ã¿ãŸãã

ãµãŒããŒåŽã®ãã¡ã€ã«ãã§ãã¯ã«ã€ããŠ
ãµãŒããŒåŽã¯ä»¥äžã®ããã«ãªã£ãŠããŸããå°ãé·ãã§ãã
ãšã¯ããããããªã«é£ããããšã¯ãããŸããã
ãŸããæåã®ã«ãŒãã§ã¯ã©ã€ã¢ã³ãããéä¿¡ããããªã¹ãã«å¯ŸããŠã«ãŒãããããŸãããããŠãã®ããŒã¿ã®æç¡ã確èªããããã§ããã
ãã®æã«ãã¡ãã«ãªãããŒã¿ãããããšããneedãªã¹ããäœæããŸãã
ãŸããã¯ã©ã€ã¢ã³ãã«ãã£ãŠãµãŒããŒã«ãªããã¡ã€ã«ãæ€çŽ¢ããããã«setåã®ãªã¹ãã®äœæãåæã«è¡ã£ãŠããŸãã
ãã®æ¬¡ã¯ã¯ã©ã€ã¢ã³ãåŽã«ãªãã¢ã€ãã ã®åé€ã§ãã
ä»åã¯ãã©ãŒãªã³ã°ã®ãããªããã¯ã¢ãããç®çãšããŠããã®ã§ãã¯ã©ã€ã¢ã³ãããåé€ãããããŒã¿ã¯ãµãŒããŒãããåé€ããŸãã
ãã®ããããµãŒããŒã®ããã¯ã¢ããããŒã¿ãæ€çŽ¢ãããã¡ããã»ããåã«ä»£å
¥ããŠãããŸãã
æåŸã«å·®éåãèšç®ããå·®åãããã°ãã®åãåé€ãããšããä»çµã¿ã§ããå
šãŠã®åŠçãçµãã£ãåŸãã¯ã©ã€ã¢ã³ãã«èŠæ±ãªã¹ããè¿ããŸãã
åŸä»ã§ãããåé€ã«é¢ããŠã¯ã¹ã¬ããã§éåæã§ãã£ãŠãè¯ãããã§ããã

ãã¡ã€ã«ã®ã¢ããããŒã
ã¢ããããŒã颿°
äžèšããã¡ã€ã«ãã¢ããããŒããã颿°ã«ãªããŸãã
äž1/3ãããã¯ã¯ããŒãžã£ãŒé¢æ°ãæ··ãã£ãŠããŸãã
ãã®é¢æ°ã¯ãµãŒããŒããè¿ã£ãŠããå¿
èŠãªã¹ãã«å¿ããŠãã¡ã€ã«ãéä¿¡ãã颿°ã§ãã
ã¢ããããŒãã«é¢ããŠãååã®å®éšããããã€ã倿ŽããããŸãã
ãŸãã¯éãããŒã¿ã®éãå¢ããŠããããšã§ããååã¯ãã®ãã¡ã€ã«ãã©ãã®ãã£ã¬ã¯ããªã«çœ®ãã°ããã®ããšããæ
å ±ã®ã¿ãéã£ãŠããŸããããä»åãããã¡ã€ã«åãæŽæ°æ¥æãªã©ã®æ
å ±ãéã£ãŠããŸãã
ãŸããåœåã®äºå®ã§ããããŸãããããµã€ãºã®å€§ããªããŒã¿ãéä¿¡ããéã«å€±æããã®ã§ããã¡ã€ã«ã®åå²ãäžã§å®çŸ©ãã颿°ã§è¡ã£ãŠããŸãã
ããŸããµã€ãºã倧ãããããšããªããã¹ããã§ããŸããããªãã£ãã®ã§ãçŸç¶ã50mbã§åå²ãšããããšã«ããŠããŸãã
ãŸããã«ãŒãã®åŸ
æ©æ¹æ³ã«ã倿ŽããããŸããååã¯ãªã¯ãšã¹ããæããåŸwait()ã§åŸ
æ©ããŠããã®ã§ããããããéåžžã«é
ã1ç§ã«1ãªã¯ãšã¹ããã€ãŸãããã¡ã€ã«ãéä¿¡æé+1ç§ããããšãããããªç¶æ
ã§ããã
ããã§ã©ã€ãã©ãªã®äžãå°ãæ·±æããããšããã䜿ã£ãŠæ¬²ãããªããããªååã§ããã"_dispatch_result"ãšããããå°ãæ ¹æ¬çãªéšåã®é¢æ°ãèŠã€ããŸããã
ãã®ã©ã€ãã©ãªã¯çµæ§é¢åãªä»æ§ã§ã¬ã¹ãã³ã¹ãå®äºãããã©ããã確èªããã«ã¯äžåºŠwait()ãåŒã³åºããªããŠã¯ãããªãã®ã§ããããããå
éšã§ã¹ãªãŒãã䜿ã£ãŠãããç¡é§ã«æéãããããŸãããã®ãããå
éšã§äœ¿ã£ãŠãã颿°ãçŽæ¥åŒã³åºããããªæãã«ããŠããŸãã
ãŸããã¹ã¬ããã£ã³ã°ãç¶æ¿ããŠãããããªã®ã§ãåŸ
ããªããã°ç¡éã«ãªã¯ãšã¹ãã®ã¹ã¬ãããå¢ããŠè¡ããããªæ°ãããã®ã§ãäžå¿ãã©ã«ãããšã«ãã¡ã€ã«ã®éä¿¡ãå
šãŠçµãã£ãŠããæ¬¡ã«é²ããããªæãã«ããŠããŸãã
ãã ãããã¡ã€ã«ã®åå²éšã«ã€ããŠã¯å°ã
éãããããŸãã
ä»ã®ãã¡ã€ã«ã¯éä¿¡ãããããã£ããšæ¬¡ã®ãªã¯ãšã¹ããéã£ãŠãå
šãŠéãçµãã£ãããªã¯ãšã¹ãã®å®äºç¶æ³ã確èªãããšããæ¹æ³ãªã®ã§ããããªãããã¡ã€ã«ãåå²ããå Žåã¯ããã¯ããŸããããŸããã§ããã
ãªã®ã§ããã¡ã€ã«ãåå²ããå Žåã¯ãªã¯ãšã¹ãããšã«äžæåæ¢ããŠããŸãããã ããåŒæ°ã«å°ããæ°å€ãå
¥ããããšã§ãã¹ãªãŒãæéãçãã§ããã®ã§ãå°ãã§ãã¬ã¹ãã³ã¹ãåäžãããããšãã§ããŠããŸãã

ãµãŒããŒåŽã§ã®åä¿¡ãåŠç
ããŠãã¯ã©ã€ã¢ã³ããèŠããšããã§æ¬¡ã¯ãµãŒããŒåŽãèŠãŠãããŸãããã
ãµãŒããŒåŽã§åãåãcgiã¯äžèšã®éãã«ãªã£ãŠããŸãã
ãŸãæåã«ããããŒæ
å ±ã®ååŸã§ãããããã§ãã¡ã€ã«ã®ååããã©ã«ãã®äœçœ®ãæŽæ°æ¥æãªã©ã®æ
å ±ãåãåããŸãã
ä»åãã€ã³ããªã®ã¯éä¿¡ãããã¡ã€ã«ãåå²ããåæãªã®ã§ãçŽæ¥ãã¡ã€ã«ãªããžã§ã¯ããã¢ããããŒãããŠããªãããããã¡ã€ã«åãååŸã§ããªããšããã§ãããã®ãããå¥éãã¡ã€ã«åããã©ãŒã æ
å ±ãšããŠéã£ãŠããŸãã
ãããŠããŒã¿ã®åä¿¡éšåã§ãã
ãã¡ã€ã«ã®åå²ã«ã€ããŠã¯ãããã¯ãµã€ãºãšããå®çŸ©ã«ããŠãããããã1ã§ããã°åå²ãããŠããªãã®ã§ãã®ãŸãŸä¿åã§ãã
ãããåå²ãããŠããå Žåã¯ã°ããŒãã«å€æ°ã«äžæŠä»£å
¥ããå
šãŠã®ãããã¯ãæã£ããšããã§ä¿åãšããããšãè¡ã£ãŠããŸãã

现ããéšåã«ã€ããŠã¯ãä»åŸé åžãäºå®ããŠãããœãŒã¹ã³ãŒãã®æ¹ãã確èªãã ããã
Androidã¹ããã§Pythonã®"print"ã確èªããæ¹æ³
話ã¯å°ããããŸãããå
ã»ã©ããçµæ§printã®éšåãæ®ããŠããã®ã«ãæ°ã¥ãã§ããããïŒ
ããœã³ã³ã®å Žåã¯ã³ã³ãœãŒã«ã§èŠãããããããããŸãããAndroidã®å Žåã£ãŠç¢ºèªã§ããã®ãã£ãŠæ°ã«ãªããŸããã?
çµè«ã§ããŸãã
確èªããã«ã¯ã¿ããªå€§å¥œãUSBãããã°ã䜿ããŸãã
éçºè
ã¢ãŒãããUSBãããã°ããªã³ã«ããåŸãADBã³ãã³ãã䜿ã£ãŠãã°ã衚瀺ããã ãã§ãã
ãã®æã®ãã€ã³ãã¯"-Sãªãã·ã§ã³ã®Pythonãã€ãã"ã§ãã
ãã¡ããšãã£ã«ã¿ãŒããããªããšå€§éã®ãã°ãæµããŠããŠèŠããéšåãã©ããªã®ãå
šãåãããŸããã
ãŸãããã©ãã¯ããã¯ã®ãšã©ãŒãªã©ãå
šãŠã€ã³ãã©ã¡ãŒã·ã§ã³ã¬ãã«ãªã®ã§ããšã©ãŒã¬ãã«ãªã©ã§çµã£ãŠããŸãåºãŠããŸããã
ãšããããã§ãäžèšã®ãããªã³ãã³ãå
¥åãè¡ãããšã§ãPythonã®ã³ã³ãœãŒã«åºåãåŸãããšãã§ããŸãã
äŸãã°äžçªäžã®éšåã¯åå²ããŒã¿ãéä¿¡ããæã®ããªã³ããã°ã§ããã
>adb logcat -s python
--------- beginning of main
04-28 20:09:48.455 26185 26226 I python : Initializing Python for Android
04-28 20:09:48.554 26185 26226 I python : [INFO ] [Logger ] Record log in /data/user/0/rcat999.jp.jp.rcat999.rcatbk/files/app/.kivy/logs/kivy_24-04-28_2.txt
04-28 20:09:48.554 26185 26226 I python : [INFO ] [Kivy ] v2.3.0
04-28 20:09:48.554 26185 26226 I python : [INFO ] [Kivy ] Installed at "/data/user/0/rcat999.jp.jp.rcat999.rcatbk/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
04-28 20:09:48.554 26185 26226 I python : [INFO ] [Python ] v3.11.5 (main, Apr 7 2024, 19:24:53) [Clang 14.0.6 (https://android.googlesource.com/toolchain/llvm-project 4c603efb0
04-28 20:09:48.555 26185 26226 I python : [INFO ] [Python ] Interpreter at ""
04-28 20:09:48.555 26185 26226 I python : [INFO ] [Logger ] Purge log fired. Processing...
04-28 20:09:48.555 26185 26226 I python : [INFO ] [Logger ] Purge finished!
04-28 20:09:48.865 26185 26226 I python : [INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2 (img_pil, img_ffpyplayer ignored)
04-28 20:09:48.875 26185 26226 I python : [INFO ] [Text ] Provider: sdl2
04-28 20:09:48.946 26185 26226 I python : [INFO ] [Factory ] 195 symbols loaded
04-28 20:09:49.029 26185 26226 I python : [INFO ] [Window ] Provider: sdl2
04-28 20:09:49.064 26185 26226 I python : [INFO ] [GL ] Using the "OpenGL ES 2" graphics system
04-28 20:09:49.065 26185 26226 I python : [INFO ] [GL ] Backend used <sdl2>
04-28 20:09:49.065 26185 26226 I python : [INFO ] [GL ] OpenGL version <b'OpenGL ES 3.2 v1.r46p0-01eac1.6b76d861277b3ea6941f5aa972def735'>
04-28 20:09:49.066 26185 26226 I python : [INFO ] [GL ] OpenGL vendor <b'ARM'>
04-28 20:09:49.066 26185 26226 I python : [INFO ] [GL ] OpenGL renderer <b'Mali-G78'>
04-28 20:09:49.066 26185 26226 I python : [INFO ] [GL ] OpenGL parsed version: 3, 2
04-28 20:09:49.066 26185 26226 I python : [INFO ] [GL ] Texture max size <16383>
04-28 20:09:49.066 26185 26226 I python : [INFO ] [GL ] Texture max units <64>
04-28 20:09:49.079 26185 26226 I python : [INFO ] [Window ] auto add sdl2 input provider
04-28 20:09:49.080 26185 26226 I python : [INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
04-28 20:09:49.132 26185 26226 I python : [INFO ] [GL ] NPOT texture support is available
04-28 20:09:49.139 26185 26226 I python : [WARNING] [Base ] Unknown <android> provider
04-28 20:09:49.139 26185 26226 I python : [INFO ] [Base ] Start application main loop
04-28 20:10:03.095 26185 26226 I python : /storage/emulated/0/DCIM/Camera/VID_20190502_002956.mp4
04-28 20:10:03.529 26185 26226 I python : ãªã¯ãšã¹ãå®äº0 {'fdir': 'DCIM/Camera', 'fname': 'VID_20190502_002956.mp4', 'mtime': 1601736737.0, 'blocksize': 4, 'current_block': 0, 'id': 'INQMKJPHsu201003'}
04-28 20:10:05.427 26185 26226 I python : ãªã¯ãšã¹ãå®äº1 {'fdir': 'DCIM/Camera', 'fname': 'VID_20190502_002956.mp4', 'mtime': 1601736737.0, 'blocksize': 4, 'current_block': 1, 'id': 'INQMKJPHsu201003'}
04-28 20:10:07.031 26185 26226 I python : ãªã¯ãšã¹ãå®äº2 {'fdir': 'DCIM/Camera', 'fname': 'VID_20190502_002956.mp4', 'mtime': 1601736737.0, 'blocksize': 4, 'current_block': 2, 'id': 'INQMKJPHsu201003'}
04-28 20:10:08.669 26185 26226 I python : ãªã¯ãšã¹ãå®äº3 {'fdir': 'DCIM/Camera', 'fname': 'VID_20190502_002956.mp4', 'mtime': 1601736737.0, 'blocksize': 4, 'current_block': 3, 'id': 'INQMKJPHsu201003'}ãŸãšã
ä»åã¯ã¢ããªã®äœã蟌ã¿ãè¡ã£ãŠãããŸããã
ãšãããããããŸã§ã§ããã¯ã¢ããã¢ããªãšããŠäœ¿çšããç®åŠãç«ã¡ãŸããã
次åã¯ããã¯ã¢ããäžãã¢ããªã¯å®å
šã«ããªãŒãºããŠããã®ã§ãããã蟺ã©ãã«ãã§ããªãããããäžåºŠguiã®æ·±å ããè¡ã£ãŠãããããšæããŸãã
ããã§ã¯ãŸããäŒãããŸãããã