/
main.py
87 lines (70 loc) · 2.71 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import audio
import movement
import sys
import subprocess
import gtk
import gobject
import datetime
import dateutil.tz as tz
import time
import annpkg.sources
import annpkg.model
import os
class Main(gtk.Window):
def __init__(self):
gobject.threads_init()
profiles = ["Walking","Profile 2"]
gtk.Window.__init__(self)
self.set_title("Recorder")
self.handle = open("profile.log",'a')
self.task_audio = None
self.task_movement = None
box = gtk.VBox()
chooser = gtk.combo_box_new_text()
for profile in profiles:
chooser.append_text(profile)
self.button_rec = gtk.Button("Start")
self.button_rec.connect("clicked",lambda but: self.toggle_recording())
chooser.connect("changed",self.update_profile)
box.pack_start(chooser,expand=False,fill=True)
box.pack_start(self.button_rec,expand=False,fill=True)
self.add(box)
self.connect("destroy",lambda x: gtk.main_quit())
self.show_all()
def update_profile(self,chooser):
now = time.time()
print >>self.handle,now,chooser.get_active_text()
def quit(self):
if self.task_audio is not None:
self.task_audio.stop()
self.task_movement.stop()
self.task_audio.join()
self.task_movement.join()
gtk.main_quit()
def toggle_recording(self):
if self.task_audio is None:
self.button_rec.set_label("Stop")
self.tm = datetime.datetime.utcnow()
self.file_audio = self.tm.strftime("audio-%Y-%m-%d-%H:%M:%S.wav")
self.file_acc = self.tm.strftime("acc-%Y-%m-%d-%H:%M:%S")
self.task_audio = audio.AudioRecorder(self.file_audio)
self.task_movement = movement.MovementReader(self.file_acc)
self.task_audio.run()
self.task_movement.start()
else:
self.button_rec.set_label("Start")
self.task_audio.stop()
self.task_movement.stop()
self.task_movement.join()
self.task_audio = None
self.task_movement = None
src_acc = annpkg.sources.MovementSource.from_file(self.file_acc,"m",(0,1))
src_aud = annpkg.sources.AudioSource.from_file(self.file_audio,"aud",(0,1),self.tm)
pkg = annpkg.model.AnnPkg([ (src,None) for src in src_acc+src_aud ],[])
pkg.write(self.tm.strftime("recording-%Y-%m-%d-%H:%M:%S.tar"))
os.remove(self.file_acc)
os.remove(self.file_audio)
def run(self):
subprocess.call(["/usr/sbin/alsactl","restore","-f","/usr/share/openmoko/scenarios/voip-handset.state"])
gtk.main()
Main().run()