2012-12-19 9 views
11

Jestem obecnie rozwijających się aplikacji przy użyciu aparatu do iPhone w HTML5 zPozostawić tylko dostęp do urządzenia kamery w HTML5

<input type="file" accept="capture=camera"> 

Problem polega na tym, że mam małą listę, która da mi wybierać między moim biblioteki i mój aparat.

enter image description here

Mój pomysł jest mieć dwa przyciski, jeden dla biblioteki i inne dla kamery.

Znam sposób udostępniania biblioteki, ale nie aparatu.

Pytanie: Czy istnieje sposób na rozdzielenie dwóch typów?

Odpowiedz

0

Ja też miałem ten problem, nie znalazłem rozwiązania, znalazłem tylko nieoficjalne źródła stwierdzające, że nie jest to możliwe. Wszystko, co możesz zrobić, to wymagać atrybutu video/* lub image/* za pomocą atrybutu accept.

+0

Cóż, to naprawdę dziwne. Daj szansę deweloperowi na korzystanie tylko z aparatu. Wiem o atrybucie, jeszcze raz dziękuję za przypomnienie mi. Szkoda nam:/ – Simon

+1

W większości przypadków ktoś z Apple zastanawiał się nad tym i postanowił na to nie pozwolić. Może dlatego, że użytkownik może się denerwować, jeśli nie może wybrać z biblioteki po zrobieniu zdjęcia, które ma zostać przesłane na stronę internetową za pomocą natywnej aplikacji aparatu. Tak naprawdę nie ma potrzeby, aby uniemożliwić korzystanie z biblioteki, prawda? – jimpic

+0

Cóż, chciałem zrobić tylko jeden krok, aby zrobić zdjęcie i nie naciskać ani jednego przycisku, ani drugiego, żeby zrobić zdjęcie, więc na razie nie jest to ważne, ale myślę, że chciałem pominąć jeden krok :) Jeszcze raz dziękuję za informacje :) – Simon

-3

napisać następujący takePhoto metodę Acton:

- (IBAction)takePhoto:(UIButton *)sender { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    [self presentViewController:picker animated:YES completion:NULL]; 
} 

W końcu robimy to samo dla sposobu działania selectphoto, ale zmieniając sourceType do UIImagePickerControllerSourceTypePhotoLibrary.

- (IBAction)selectPhoto:(UIButton *)sender { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    [self presentViewController:picker animated:YES completion:NULL]; 
} 

Wdrażanie delegata Metody UIImagePickerController

Gdy użytkownik robi zdjęcie aparatem i zmianę rozmiaru obrazu (zmiana rozmiaru zdjęcia jest dozwolone, ponieważ mówiliśmy allowsEditing = TAK, gdy stworzyliśmy próbnika obrazu). Jest to NSDictionary, który zawiera, między innymi, oryginalny obraz i edytowany obraz (dostępny poprzez tag UIImagePickerControllerEditedImage).

(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 
    self.imageView.image = chosenImage; 
    [picker dismissViewControllerAnimated:YES completion:NULL]; 

} 
+0

mówimy o HTML5, więc ta odpowiedź jest nieprawidłowa – MeV

1

Unfortunaly nie możliwe:/

Wyciąg z HTML Media Capture - Security and privacy considerations:

Ponadto realizacja User Agent Zaleca się, aby zapewnić wskazanie użytkownikowi gdy urządzenie wejściowe jest włączona i sprawiają, że możliwe jest przerwanie takiego przechwytywania przez użytkownika. Podobnie User Agent Zaleca się, aby zaoferować użytkownikowi kontrolę, tak, aby umożliwić użytkownikowi:

  • wybrać dokładnie urządzenie przechwytywania mediów, aby być stosowane, jeżeli istnieją
    wiele urządzeń tego samego typu (np przedni aparat fotograficzny w kamerze podstawowej).

  • wyłącza przechwytywanie dźwięku w trybie przechwytywania wideo .

0

Nie jest to możliwe w iOS6 przez 10. To działa na Androidzie 3.0+.

Atrybut capture, wprowadzony przez HTML Media Capture, powinien wymusić iOS, aby przejść bezpośrednio do aplikacji kamery, ale nie jest obsługiwany.

Od the spec:

atrybut jest atrybutem capture logiczna, że ​​jeżeli określona, ​​wskazuje, że przechwytywania mediów bezpośrednio z otoczenia urządzenia ... jest korzystne.

PS: Twój kod jest lekko niepoprawne, należy użyć <input accept="video/*,image/*" capture > do:

  1. przechwytywania zarówno wideo i zdjęcia
  2. skok bezpośrednio do kamery (jeśli jest obsługiwany)

See Correct HTML Media Capture Syntax, aby uzyskać więcej informacji.