mirror of
https://github.com/jeremysrand/ListenerApp.git
synced 2024-06-17 04:29:45 +00:00
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:
parent
07d3bb88c7
commit
083c938e0d
|
@ -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())
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user