Ich erstelle eine Anwendung, die ein Foto erfassen wird und es zum Zeitpunkt der Fotoaufnahme auf der Grundlage der Gyroskop Daten umorientieren.Capturing Gyroskop Daten genau in dem Moment der Fotoaufnahme
Ich habe Funktionen erstellt in die Kreiseldaten vom Telefon zu erfassen:
startUpdates()
und die Daten in der Aufnahme zu beenden:
stopUpdates()
ich versuchte, indem diese in die UIImagePickerController:
if UIImagePickerController.isSourceTypeAvailable(.camera) {
guard ptInitials.text != "" else {
missingIdentifier(text: "Please add an identifier prior to taking a photo")
return}
startUpdates()
imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.allowsEditing = false
imagePicker.sourceType = UIImagePickerControllerSourceType.camera
imagePicker.cameraCaptureMode = .photo
imagePicker.modalPresentationStyle = .fullScreen
present(imagePicker,
animated: true,
completion: nil)
}
Dies startet die Gyro Capture während der Bilderfassung beginnt.
Ich habe es die Gyro-Daten zu einem optionalen Doppel, LivePhotoAxis: Double? Übergeben, während es dies innerhalb der "StartUpdates()" -Funktion misst.
Ich habe versucht, es zu "stoppen", um die Daten zu erfassen, sobald das Bild aufgenommen wurde, so dass die letzten bekannten Gyro-Daten in meiner Variablen gespeichert werden und in andere Funktionen übergehen können;
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
stopUpdates()
let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
saveImageToDocuments(image: chosenImage, fileNameWithExtension: "image.jpg")
dismiss(animated: true, completion: nil
)
}
Allerdings ist das Problem, dass die stopUpdates() -Methode erst, nachdem der Benutzer „bestätigt“ sie mögen ihr geschnappt Foto (vs zurückzuerobern es) genannt wird.
Von dem, was ich gelesen habe, gibt es eine private API mit uiImagePickerControllerUserDidCaptureItem, die den genauen Moment fängt das Foto aufgenommen wird. Ich könnte NSNotification verwenden, um dies zu finden und StopUpdates() aufzurufen, sobald das Foto tatsächlich aufgenommen wurde.
Ist das richtig, dass dies eine private API ist? Kann ich das verwenden, um diesen Moment festzuhalten, oder wird meine App abgelehnt?
Ebenso gibt es einen besseren Weg, um mein Gyro-Updates auf dem genauen Zeitpunkt der Fotoaufnahme auszuschalten?
Danke!