рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯ habrahabr.ru рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд░реНрдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ред рднрд╛рдЧ 2 - рдЬреАрдпреВрдЖрдИ

рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдореИрдВрдиреЗ SL4A (рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд▓реЗрдпрд░) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдкреЙрдк-рдЕрдк рдХреИрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ, рдЙрдирд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЙрдирдореЗрдВ рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред рдЙрд╕реА рднрд╛рдЧ рдореЗрдВ, рдореИрдВ WebViews рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, WebViews HTML, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ CSS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдорд╛рд░реНрдЯрдлрд╝реЛрди рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓рд╛ рд╡реЗрдмрдХрд┐рдЯ рд╣реИ, рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рд╕реНрд░реЛрдд рдХреЛрдб

habr.py
# -*- coding: utf-8 -*- import android, os, sys, urllib2 from xml.etree import ElementTree def show_karma_value(value): return value droid = android.Android() droid.webViewShow(os.path.dirname(sys.argv[0]) + '/html/habr.html') #  ,    -  /html/habr.html while True: user = droid.eventWaitFor('login').result if user: droid.dialogCreateSpinnerProgress("", " ") #         droid.dialogShow() try: feed = urllib2.urlopen('http://habrahabr.ru/api/profile/' + user['data']) #  XML XML = ElementTree.XML(feed.read()) #   XML try: #    <error> XML.find("error").text value = '  ' except: #   <error>  ,      value = XML.find("karma").text except: value = '  ' droid.dialogDismiss() #    droid.eventPost('show_karma_value', show_karma_value(value)) #    show_karma_value    droid.vibrate() #      


habr.html
 <html> <head> <title>Sensor Monitor</title> <style> .logo{ text-align: center; width: 110px; height: 110px; display: block; margin: 10px auto; background: url(http://habrahabr.ru/i/bg-multilogo.png) no-repeat 50% -144px; } #karma { color: #6DA3BD; } </style> </head> <body> <span class="logo"></span> <form onsubmit="speak(); return false;"> <label for="login"> %username%</label> <input type="text" id="login" /> <input type="submit" value="!" /> </form> <h2 id="karma" style="display: inline;" /></h2> <script> var droid = new Android(); var speak = function() { droid.eventPost("login", document.getElementById("login").value); } var show_karma_value = function(data) { document.getElementById("karma").innerHTML = ' ' + document.getElementById("login").value + ': ' + data.data; } droid.registerCallback("show_karma_value", show_karma_value); </script> </body> </html> 


рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ

рдПрдВрдбреНрд░реЙрдЗрдб рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╡рд░реНрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╡рд░реНрдЧ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЕрд░реНрдерд╛рдд, рдХрд┐рд╕реА рднреА рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ JS рдХреЛрдб рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
 var droid = new Android(); 

рдпрджрд┐ рдЖрдк habr.py рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕рдореЗрдВ рдХрдо рдХреЛрдб рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдХреЗ, рдпрд╣ "рдШрдЯрдирд╛рдУрдВ" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ:
Html рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдо рдИрд╡реЗрдВрдЯ рдХреЛ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ
 droid.registerCallback("show_karma_value", show_karma_value); 

рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ - рдШрдЯрдирд╛ рдХрд╛ рдирд╛рдо, рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ - рдПрдХ рдЪрд░ рдЬреЛ рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЪрд░ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрджрд┐ рд╣рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдпрд╛ рдмрд╕ рдЗрд╕реЗ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░реЗрдВ, рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
 droid.eventPost("login", document.getElementById("login").value); 

рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ
 while True: user = droid.eventWaitFor('login').result 

рдФрд░ рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд▓реЙрдЧрд┐рди рдШрдЯрдирд╛ рдХреЛ рдЙрдард╛рдпрд╛, рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреИрд░-рдЦрд╛рд▓реА рдорд╛рди рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рд╣рдо рдмрд╛рдХреА рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╣реА рдЖрдЧреЗ, рд╣рдо рдЙрд╕ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЕрдВрджрд░ рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ HTML рдИрд╡реЗрдВрдЯ рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдереА
 droid.eventPost('show_karma_value', value) 

рд╣рдорд╛рд░рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред
 var show_karma_value = function(data) { document.getElementById("karma").innerHTML = ' ' + document.getElementById("login").value + ': ' + data.data; } 


рд╕рд╛рде рд╣реА, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рд╣реЛрддреА рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреА рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж рдПрдХ рдЫреЛрдЯрд╛ рдХрдВрдкрди рд╣реЛрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖

рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рднрд▓реЗ рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЬреАрдпреВрдЖрдИ рд╣реИ, рдпрд╣ WebViews рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдкрд╣рд▓реЗ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рдж рднреА, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╡рд┐рд╖рдп рд╣рдмреНрд░рд▓реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд▓реЗрдЦ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

Source: https://habr.com/ru/post/In122281/


All Articles