07 pys60 pim bluetooth v2
TRANSCRIPT
-
8/3/2019 07 PyS60 Pim Bluetooth v2
1/45
Bevezets a mobilszoftverfejlesztsbe
Dr. Forstner Bertalan
BME-AAIT 2008 1Bevezets a mobil szoftverfejlesztsbe 7. elads
-
8/3/2019 07 PyS60 Pim Bluetooth v2
2/45
Az elz rsz tartalmblAdatkezels
File objektum Perzisztens sztr: e32dbm
e c s a a z s: eTelefon funkci
zenetkezelsWebes tartalmak letltse: urllib
Fejlettebb HTTP hasznlat: httplib BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 2
-
8/3/2019 07 PyS60 Pim Bluetooth v2
3/45
Emlkeztek mg rMilyen osztllyal tudunk titkostott
adatcsert vgezni HTTP protokollon?
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 3
-
8/3/2019 07 PyS60 Pim Bluetooth v2
4/45
Emlkeztek mg rMilyen osztllyal tudunk titkostott
adatcsert vgezni HTTP protokollon?
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 4
A HTTPSConnection osztllyal.
-
8/3/2019 07 PyS60 Pim Bluetooth v2
5/45
7. elads PyS60
PIM funkcik elrse
Bluetooth hasznlat
Hzi feladat kiads
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 5
-
8/3/2019 07 PyS60 Pim Bluetooth v2
6/45
Tartalom PIM funkcik elrse
Calendar modul Contacts modul
OBEX
RFCOMM
Rendszerinformcik elrse: sysinfo
Helyfgg szolgltatsok
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 6
-
8/3/2019 07 PyS60 Pim Bluetooth v2
7/45
A PIM funkcik elrseOkostelefonokon beptett szemlyes
informci-kezel
szoftverek PIM, Personal Information Management
, ,
Symbianos relcis adatbzisokban
PyS60 kt modult ad hozz:
calendar: naptr s teendk
contacts: kontaktok
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 7
-
8/3/2019 07 PyS60 Pim Bluetooth v2
8/45
Az e32calendar modulA naptr ltal is tmogatott 5-fle
bejegyzshez Tallkoz (AppointmentEntry)
vfordul (AnniversaryEntry)
Tennival (TodoEntry)
Emlkeztet (ReminderEntry)
Mind az Entry osztlybl szrmazik
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 8
-
8/3/2019 07 PyS60 Pim Bluetooth v2
9/45
A CalendarDB objektum Megnyits: a perzisztens sztrakhoz hasonl
mdon
Aktv naptr adatbzishoz paramter nlkl:calendar.open()
Az idpontok Unix idk float tpus
time.time()
Formzsuk az e32db modullal
format_time(unix_time)
format_rawtime(symbian_time) BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 9
-
8/3/2019 07 PyS60 Pim Bluetooth v2
10/45
Esemnyek lekrdezseentry_list = find_instances(start_datum, veg_datum, keresosztring =u
[,appointments=0, events=0, anniversaries=0, todos=0,reminders=0])
sztrak listival tr vissza
kt eleme van: id, datetime Egy hnap, illetve nap esemnyeientry_list = monthly_instances(honap, appointments=0, events=0,
anniversaries=0, todos=0, reminders=0)
entry_list = daily_instances(nap, appointments=0, events=0,anniversaries=0, todos=0), reminders=0
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 10
-
8/3/2019 07 PyS60 Pim Bluetooth v2
11/45
j elemek felvtele AppointmentEntry add_appointment()
EventEntry add_event() AnniversaryEntry add_anniversary()
_
ReminderEntry add_reminder()
Az j elemmel trnek vissza
A felvtel automatikusan tranzakciban
commit()
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 11
-
8/3/2019 07 PyS60 Pim Bluetooth v2
12/45
Elemek elrse s trlsemycal = e32calendar.open()entry = mycal[id] #id-t korbban meghatroztuk
del mycal[id] #Trljk az adatbzisbl
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 12
-
8/3/2019 07 PyS60 Pim Bluetooth v2
13/45
Az Entry osztly 1 Elem szveges lersnak lekrdezse s
mdostsa: content attribtum
Helyszne: location attribtum
Kezdeti s v id ont lekrdezs, me ads:
start_time s end_time
set_time(kezdeti_id, befejez_id)
Riaszts Alarm
None rtk: trls
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 13
-
8/3/2019 07 PyS60 Pim Bluetooth v2
14/45
Az Entry osztly 2 Esemny priorits: priority
0..255 elvileg
1(fontos)..3 gyakorlatilag
Elem azonostja: id
o s m os s: as mo e
Kihzott esemny: crossed_out (bool) Todo esetn cross_out_time is kell
Szabvnyos versit vcalendar exportls Sztringbe az as_vcalendar() fggvnnyel
CalendarDB-n
export_vcalendars((int, )), import_vcalendars(string) BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 14
-
8/3/2019 07 PyS60 Pim Bluetooth v2
15/45
-
8/3/2019 07 PyS60 Pim Bluetooth v2
16/45
Kulcs rtk Magyarzat
type Az ismtlds tpust adja meg.daily Napi ismtlds.weekly A megadott napon hetente ismtldik (pl. minden htfn)
monthly_by_dates Minden hnap azonos szm napjn (pl. minden h 5-n)ismtldik.
monthly_by_days A hnap heteihez ktd ismtls, pldul minden hnapmsodik szerdja, negyedik cstrtke, stb.
yearly_by_date Minden v adott napjn ismtldik (pl. minden februr 25-n)
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 16
_ _ .
minden vben mjus els vasrnapja)
exceptions Unix idk listja Az ismtlds nem trtnik meg a listban megadott napokon.
start Idpont Mikortl kezddik az ismtls sorozatend Idpont vagy None Meddig tartsanak az ismtldsek, illetve nylt vg
ismtl
dsi listainterval egsz Milyen gyakran ismtldjn az esemny. Csak mindenmegadott sorszm ismtlds teljesl, pldul napi ismtlss 2-es interval rtk mellett ktnaponta ismtld esemnytkapunk
days 0-6 kztti egszek
listja
Explicit megadhatjuk, hogy a ht mely napjn trtnjen az
ismtl
ds (pl. [2,3] jelentse heti ismtl
dsnl: mindenszerda s cstrtk).
-
8/3/2019 07 PyS60 Pim Bluetooth v2
17/45
Ismtlds pldaismetles = {"type":"daily","exceptions":[start_nap+2*24*60*60], #kt nap mlva nincs esemny"start": start_nap"end":start_nap+14*24*60*60, #kt htig tart a sorozat"interval":2 #Minden msnap
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 17
-
8/3/2019 07 PyS60 Pim Bluetooth v2
18/45
-
8/3/2019 07 PyS60 Pim Bluetooth v2
19/45
A kapcsolatok adatbzisa Korai mobil eszkzk: telefonknyv SIM krtyn
Hordozhat
Kevs nv, kevs adat, kevs bet
contacts modul
ContactDB osztly, perszisztens sztr-szerelrs
Megnyits: mint calendar, default: open()
Elemek indexe az egyedi azonostjuk (id)
Az elemek Contact objektumok
ContactField mez
kkel BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 19
-
8/3/2019 07 PyS60 Pim Bluetooth v2
20/45
Kontaktok hozzadsa, keresseadd_contact()
j bejegyzs jn ltre, lockolva kapjuk visszaFind(keressztring) hvssal kereshetnk
sszes elem kulcsa: keys() (lista)Trls: del
Tmrts: compact()
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 20
-
8/3/2019 07 PyS60 Pim Bluetooth v2
21/45
A mezk lehetsges tpusaiField_types(): sztrak listjval tr vissza
storagetype A trolt adat tpusa. PyS60 alatt csak aszveges s dtum tpusok kezelhetek
jelenleg.
text, datetime, item_idvagy binary
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 21
, , , ,
stb.)
. _
location Hova tartozik a mez, pl. munkahelyi adatok,otthoni adatok, stb.
home vagy workvagy none
name Teljes (kirand) meznv Mobile (business)
-
8/3/2019 07 PyS60 Pim Bluetooth v2
22/45
PyS60 alatt kezelhet meztpusoknote
pager_number
phone_numberpo_box
postal_address
ostal_code
citycompany_name
countrydatedtmf_stringemail_address
_
statestreet_address
url
video_number
wvid
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 22
exten e _a ress
fax_numberfirst_name
job_titlelast_name
mobile_number
-
8/3/2019 07 PyS60 Pim Bluetooth v2
23/45
TranzakciContact objektumon a mveletek mindig
tranzakciban begin(), commit(), rollback()
kzvetlenl krdezhet
import contacts
mycontacts = contacts.open()print str(mycontacts[mycontacts.keys()[0]].id) +":"+ \\mycontacts[mycontacts.keys()[0]].title
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 23
-
8/3/2019 07 PyS60 Pim Bluetooth v2
24/45
Mezk kezelse vcard sztringknt lekrdezs: as_vcard()
export_vcards, import_vcards mint naptrnl
j mezk hozzadsa add_field(tpus, [rtk, label=cmke, location=location])
Cmke = name, a megjelentett nv, automatikusan is generldik Mez trlse: az indexvel, mint egy listbl
Mez keresse
find(type[, location])
Lockolt objektum szerkesztsekor ContactBusy
kivtelt kapunk. BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 24
-
8/3/2019 07 PyS60 Pim Bluetooth v2
25/45
Pldaimport contacts, appuifw, telephoneappuifw.app.title = u"Telef-o-nknyv"
mycontacts = contacts.open()list = [] #A szrt lista a nevekkelfiltered = mycontacts.find(u"o")or person n ere :
list.append(person.title)if list:index = appuifw.selection_list(list, search_field=1)phone_number = filtered[index].find('mobile_number') #mez vlasztsif phone_number:
telephone.dial(phone_number[0].value) #tbb elem is lehetelse:
appuifw.note(u"Nincs mobil szma a kontaktnak.", "error")else:appuifw.note(u"Nincsenek o-bets elemek a listban.", "error")
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 25
-
8/3/2019 07 PyS60 Pim Bluetooth v2
26/45
Contact csoportokA contact bejegyzsek kztt
ContactDb.groups() hvs visszaad egyGroups tpus objektumot
add_group(csoport_neve)
Az egyes csoportok: Group tpusobjektumok kpviselik csoport id-je s neve (name)
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 26
-
8/3/2019 07 PyS60 Pim Bluetooth v2
27/45
Rvidtv rdis kommunikciFelhasznlk gyakran cserlnek adatot
Bejegyzsek (naptr, kontakt) tkldse,kpek, hangok megosztsa a msik fllel
Jtkprogram, kls GPS vev, headset, stb.
Rgen: Infravrs
Lass, fizikai rlts kell, megbzhatatlan
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 27
-
8/3/2019 07 PyS60 Pim Bluetooth v2
28/45
Adatcsere Bluetooth segtsgvel Legelterjedtebb rvidtv rdis eszkz
BT bekapcsoland a kszlken
Eszkzk prostsa Opercis rendszer felletn
PyS60 alatt a standard socket modul kiterjesztsekntmegvalstva
Msik fl kivlasztsa: egyedi BT cme alapjn
xx:xx:xx:xx:xx:xx (x: hexa szmjegy) Van olvashat nv is
BT felleten klnfle szolgltatsok (service)
Klnbz
csatornn: nem zavarjk egymst. BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 28
-
8/3/2019 07 PyS60 Pim Bluetooth v2
29/45
BT OBEX: adatcsere vezetk nlklFjl tkldse msik eszkzre (OBEX
Push)
A cleszkznek is tmogatnia kell az OBEXszolgltatst
Eszkzk feldertse Oprendszer sajt dialgust dobjuk fel
(address, service_szotar) = bt_obex_discover() Sztr kulcsai: sztenderdizlt service nevek rtkei: a hozzjuk rendelt csatorna szma
(egsz rtkknt). BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 29
-
8/3/2019 07 PyS60 Pim Bluetooth v2
30/45
Adatklds bt_obex_send_file(cm, csatorna, fjl)
import btsocket, appuifw
def sendfile():FILE = u"E:\\Python\\wood.jpg"try:address, services = btsocket.bt_obex_discover()
appuifw.note(u"Nincs OBEX-et tmogat eszkz a krnyken.", "error")return
if(u"OBEX Object Push") in services: #standard nvchannel = services[u"OBEX Object Push"]appuifw.note(u"Klds folyamatban.", "conf")btsocket.bt_obex_send_file(address, channel, FILE)appuifw.note(u"Elkldtem.", "conf")
else:appuifw.note(u"Nem tmogatja az OBEX-et.", "error")return
sendfile()
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 30
-
8/3/2019 07 PyS60 Pim Bluetooth v2
31/45
Kommunikci BT socketenAz RFCOMM szolgltatssal socketen
keresztl kommuniklhatunk kt kszlkkztt
Mint TCP/IP alatt: e cs
Szoksos mveletek: send, recv,
Egyszerbb: fjlt ksztnk a socketbl
Kommunikl felek: kliens, szerver
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 31
-
8/3/2019 07 PyS60 Pim Bluetooth v2
32/45
Szerver oldali feladatok Standard socket ksztse, AF_BT
Csatorna hozzrendels:
bt_rfcomm_get_available_server_channel() Bejv krsek figyelse: listen()
Szolgltats meghirdetse: bt_advertise_service(nv, socket, flag,osztly)
Osztly: RFCOMM, illetve OBEX
bt_obex_receive(socket, fjlnv)
Socket biztonsgi belltsai: set_security(socket, zemmd)
AUTH, AUTHOR, ENCRYPT
Krsek fogadsa: accept()
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 32
-
8/3/2019 07 PyS60 Pim Bluetooth v2
33/45
Plda: szavazgpdef do_server():client=btsocket.socket(btsocket.AF_BT, btsocket.SOCK_STREAM)channel=btsocket.bt_rfcomm_get_available_server_channel(client)client.bind(("", channel)) //BT eseten eleg a portot megadni
client.listen(1)btsocket.bt_advertise_service(u"vote", client, True, RFCOMM)btsocket.set_security(client, btsocket.AUTHOR)appuifw.note(u"Vrakozom...", "conf")connection, address = client.accept()
" "= . ,
msg = u"Nem-mel fogsz valaszolni erre a kerdesre?\n"print >> f, msge32.ao_sleep(1)answer=f.readline()appuifw.note(unicode(answer), "info")e32.ao_sleep(1)client.close()
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 33
-
8/3/2019 07 PyS60 Pim Bluetooth v2
34/45
Kliens oldali feladatokFelderts: mint OBEX esetn
address, services = bt_discover()Csatlakozs: connect((cm, csatorna))
A protokoll ne vigyen deadlock-ba
Buffer betels vagy kirls esetn blokkol ahvs
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 34
-
8/3/2019 07 PyS60 Pim Bluetooth v2
35/45
Plda: kliensdef do_client():server=btsocket.socket(AF_BT, SOCK_STREAM)
address, services = btsocket.bt_discover()if "vote" in services:channel = services[u"vote"]
. ,
f=server.makefile("rw", 0)query = f.readline()if appuifw.query(unicode(query), "query"):print >> f, "Igen"
else:print >> f, "Nem"e32.ao_sleep(2)
else:appuifw.note(u"Nem tmogatja a szavaz szolgltatst.", "error")
server.close() BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 35
-
8/3/2019 07 PyS60 Pim Bluetooth v2
36/45
Informcik a rendszerrl: a sysinfo modulimei() A kszlk egyedi azonost szmt, az IMEI kdot adjavissza Unicode sztring formtumban. Kszlkazonostsnl, msolsvdelemnl lehet hasznunkra.
active_profile() Az aktulisan kivlasztott profilt (csenghangok s hasonlbelltsok) adja vissza. Beptett rtkei: general, silent,meeting, outdoor, pager, offline, drive. A csendes(silent) profil esetn illik az alkalmazsnak is kikapcsolnia a
ango at.
ring_type() A csengets tpusa, ami lehet normal, ascending(nvekv), ring once (egyszer csenget), beep (csakspol), illetve silent (csendes)
os_version() Az opercis rendszer verziszmt kaphatjuk meg
sw_version() A futtat szoftver verzijt Unicode sztringknt adja vissza.Emultor esetn emulator az rtke.
display_pixels(),display_twips()
A kperny mrett adja vissza (szlessg, magassg)formban pixelben avagy twips-ben. (A twips a hvelyk
1440-ed rsze). BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 36
-
8/3/2019 07 PyS60 Pim Bluetooth v2
37/45
Sysinfo modul 2total_rom() A ROM memria mrete, bjtban.total_ram() A kszlk rhat memrijnak mrete, bjtban.
free_ram() A szabad memria mrete, bjtban.max_ramdrive_size()
A D: meghajt maximlis mrete, bjtban.
free_drivespace() A httrtrakon elrhet szabad memria mrtktkaphatjuk meg egy sztrban, a kulcs a meghajt.
battery() Az elem tltttsge 0-100 skln. Alacsony tltttsgesetn rdemes a munkkat perzisztens trra tenni,
illetve a fogyasztst (hang, kommunikcis modulok)visszafogni.
signal_bars() A trer erssge, 0-7 skln.
signal_dbm() A trer dBm-ben.
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 37
-
8/3/2019 07 PyS60 Pim Bluetooth v2
38/45
Tjkozds a fizikai trbenKi lehet hasznlni azt az informcit,
amelyet a felhasznl fizikai helye jelent
Pl. egy zletben termkinformcik, egytrtnelmi helysznen histria adatok, utazs
alkalmval trkp stb.Pontos pozcionls: GPS-sel
Kls
: BT RFCOMM Bels: positioning modul
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 38
-
8/3/2019 07 PyS60 Pim Bluetooth v2
39/45
Tjkozds cellainformcikkal A rdis hlzat tornyai lehetv teszik a mobil
cellk azonostst
nem tl pontos helyszn azonosts
Location modul
mcc, mnc, lac, cellid = gsm_location() Mobile Country Code
Mobile Network Code
Location Area Code s a Cell ID LAC pl. egy vrosi kerlet
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 39
-
8/3/2019 07 PyS60 Pim Bluetooth v2
40/45
GPS alapon A positioningmodullal
modules(): lekrdezi a rendelkezsre ll pozcionl
eszkzket default_module(): alaprtelmezett modul azonostjt
ve ez sz r a v sszaa o mo u o nyv ra nalistjt tartalmazza.
[{'available': 0, 'id': 270526873, 'name': u'Bluetooth GPS'},
{'available': 1, 'id': 270526858, 'name': u'Integrated GPS'},
{'available': 1, 'id': 270559509, 'name': u'Network based'}]
select_module(id)
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 40
-
8/3/2019 07 PyS60 Pim Bluetooth v2
41/45
Requestor positioning.set_requestors([{"type":"service","format":"ap
plication","data":"gps_app"}]
A tpus lehet service, illetve contact. Els esetben a data paramternek tipikus
rtke lthat fenn, contact esetn ide pl. a lekrdezst
kezdemnyez telefonszmt lehet belltani
A format megadja a data paramterformtumt
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 41
-
8/3/2019 07 PyS60 Pim Bluetooth v2
42/45
Pozci krs position( course=0, satellites=0, callback=None, interval=
POSITION_INTERVAL, partial=0 )
stop_position() Callback event paramtere egy sztr
position kulcs alatt latitude (szlessg), longitude (hosszsg),altitude (magassg), horizontal_accuracy,vertical_accuracy, stb.
course kulcs alatt pl. speed
Ha nem llnak rendelkezsre adatok: NaN
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 42
-
8/3/2019 07 PyS60 Pim Bluetooth v2
43/45
sszefoglals PIM funkcik elrse
e32calendar modul
contacts modul
OBEX
RFCOMM
Rendszerinformcik elrse: sysinfo Helyfgg szolgltatsok
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 43
-
8/3/2019 07 PyS60 Pim Bluetooth v2
44/45
TesztMilyen paramterei vannak a calendar
modul esemnyeire definiltismtldseknek?
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 44
-
8/3/2019 07 PyS60 Pim Bluetooth v2
45/45
Hzi feladatDinamikus modul-betlts
module = __import__(modulename) module.function()
z r e n orm c A beadott hzit nem emultoron, hanem
kszlken teszteljk.
Ha nem fut rajta, -1 jegyrt jtszhatsz jra Py: Beadott keretrendszerben legyen ugrs a
sajt mezre!
BME-AAIT 2008 Bevezets a mobil szoftverfejlesztsbe 7. elads 45