Some UI improvements but it is still really rough. Also, a bunch of debug visible in the UI which is nice.

This commit is contained in:
Jeremy Rand 2021-07-20 19:42:47 -04:00
parent 07d3bb88c7
commit 083c938e0d
2 changed files with 25 additions and 13 deletions

View File

@ -12,6 +12,7 @@ struct ContentView: View {
@State private var listening = false @State private var listening = false
@State private var listenEnabled = false @State private var listenEnabled = false
@State private var textHeard = "" @State private var textHeard = ""
@State private var log = ""
@State private var ipAddress = "" @State private var ipAddress = ""
@State private var isEditing = false @State private var isEditing = false
@ -38,15 +39,16 @@ struct ContentView: View {
} }
.padding() .padding()
Label(textHeard, systemImage:"") ScrollView() {
.labelStyle(TitleOnlyLabelStyle()) Text(log)
.padding() .multilineTextAlignment(.leading)
}
Button("Listen") { Button("Listen") {
listen() listen()
} }
.padding() .padding()
.background(listening ? Color.red : Color.white) .background(listening ? Color.red : Color.clear)
.foregroundColor(listening ? .black : .blue) .foregroundColor(listening ? .black : .blue)
.disabled(listenEnabled == false) .disabled(listenEnabled == false)
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)
@ -54,17 +56,26 @@ struct ContentView: View {
} }
} }
func logError(message: String) {
log.append("ERROR: " + message + "\n")
}
func logEvent(message: String) {
log.append("EVENT: " + message + "\n")
}
func validate(destination : String) { func validate(destination : String) {
logEvent(message: "Attempting to connect to " + destination)
client = TCPClient(address: destination, port: Int32(port)) client = TCPClient(address: destination, port: Int32(port))
guard let client = client else { return } guard let client = client else { return }
switch client.connect(timeout: 10) { switch client.connect(timeout: 10) {
case .success: case .success:
listenEnabled = true listenEnabled = true
logEvent(message: "Connected to " + destination)
case .failure(let error): case .failure(let error):
client.close() client.close()
self.client = nil self.client = nil
textHeard.append("\n") logError(message: String(describing: error))
textHeard.append(String(describing: error))
break break
} }
} }
@ -108,14 +119,14 @@ struct ContentView: View {
break break
case .failure(let error): case .failure(let error):
self.listening = false self.listening = false
textHeard.append("\n") logError(message: String(describing: error))
textHeard.append(String(describing: error))
} }
} }
if (self.listening) { if (self.listening) {
do { do {
try startRecording() try startRecording()
logEvent(message: "Listening...")
} }
catch { catch {
self.listening = false self.listening = false
@ -123,6 +134,7 @@ struct ContentView: View {
} }
if (!self.listening) { if (!self.listening) {
logEvent(message: "Listening stopped")
audioEngine.stop() audioEngine.stop()
recognitionRequest?.endAudio() recognitionRequest?.endAudio()
switch (client.send(data: isListening())) { switch (client.send(data: isListening())) {
@ -130,8 +142,7 @@ struct ContentView: View {
break break
case .failure(let error): case .failure(let error):
self.listening = false self.listening = false
textHeard.append("\n") logError(message: String(describing: error))
textHeard.append(String(describing: error))
} }
} }
} }
@ -161,11 +172,11 @@ struct ContentView: View {
switch (client.send(data: pack("<hh\(stringToSend.count)s", [LISTEN_TEXT_MSG, stringToSend.count, stringToSend]))) { switch (client.send(data: pack("<hh\(stringToSend.count)s", [LISTEN_TEXT_MSG, stringToSend.count, stringToSend]))) {
case .success: case .success:
self.textHeard = latestText self.textHeard = latestText
logEvent(message: "Sent \"" + stringToSend + "\"")
break break
case .failure(let error): case .failure(let error):
self.listening = false self.listening = false
textHeard.append("\n") logError(message: String(describing: error))
textHeard.append(String(describing: error))
} }
} }
} }
@ -214,6 +225,7 @@ struct ContentView: View {
self.recognitionRequest = nil self.recognitionRequest = nil
self.recognitionTask = nil self.recognitionTask = nil
self.listening = false self.listening = false
logEvent(message: "Listening stopped")
guard let client = client else { return } guard let client = client else { return }
client.send(data: isListening()) client.send(data: isListening())
} }

View File

@ -17,7 +17,7 @@
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.0</string> <string>1.0</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>76</string> <string>87</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>NSSpeechRecognitionUsageDescription</key> <key>NSSpeechRecognitionUsageDescription</key>