2011-12-14 17 views
5

Na podstawie this article, próbuję zrobić zdjęcie z aparatu na emulatorze Androida. Postępowałem zgodnie z instrukcjami, jak mówili. Ale nie uzyskałem pozytywnego wyniku.Jak zrobić zdjęcie z aparatu na emulatorze Androida?

Dostaję Player jest , podczas gdy używam WebcamBroadcaster.java (aplikacja Java).

Czy ktoś już to osiągnął? Jeśli tak, Po prostu pozwól mi, jak to zrobić.

Albo

Czy istnieje inna opcja, aby zrobić zdjęcie z kamery na Android Emulator?

+0

Łącza te mogą zawierać kod i przewodnik:
http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html http: // docs. phonegap.com/en/1.0.0/phonegap_camera_camera.md.html http://developer.appcelerator.com/question/127948/timed-photo-capture-in-android – Rizvan

Odpowiedz

9

W Android emulatora 2.1 mój kod działa, aby przechwycić obraz ale nie pracuje w inni wersji Androida

Aby rozpocząć kamera do przechwytywania można uruchomić kamerę do przechwytywania za pomocą poniższego filtra zamiarem

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(i, CAMERA_RESULT); 

Po zrobieniu dostaniesz obraz jako bitmapę więc trzeba uzyskać wynik działalności

if (resultCode == RESULT_OK && requestCode == CAMERA_RESULT) { 
    Bundle extras = data.getExtras(); 
    if(extras.containsKey("data")) { 
     Bitmap bmp = (Bitmap) extras.get("data"); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     bmp.compress(Bitmap.CompressFormat.PNG, 100, baos); 
     byte[] image = baos.toByteArray(); 
     if(image != null) { 
      //User this byte array in your application 
     } 
    }else { 
     Toast.makeText(getBaseContext(), "Fail to capture Image", Toast.LENGTH_LONG).show(); 
    } 
} 

Edit:

Teraz prawie we wszystkich emulatorów ten kod działa.

+0

Dzięki. Używam wersji Androida 2.3.3.Czy jest jakaś inna opcja? – bharath

+0

W emulatorze jest problem tylko kamera działa dla Androida-2.1, ale we wszystkich urządzeniach będzie działać dobrze, w którym jest sprzęt kamery, więc do celów testowych można użyć emulatora z systemem Android 2.1 – Dharmendra

+0

Dzięki Dharmendra. – bharath

2

Jak wspomniał w swoim artykule, napisał ten kod w pośpiechu i dlatego może to być trochę błędne. Nie mówi się, że działa w ogóle.

Im zakładając, że stosując dokładnie ten kod do uruchomienia tej rzeczy:

CameraSource cs = new SocketCamera("192.168.0.100", 9889, 320, 240, true); 
if (!cs.open()) { /* deal with failure to obtain camera */ } 
while(/*some condition*/) { 
    cs.capture(canvas) //capture the frame onto the canvas 
} 
cs.close(); 

co jest, nawiasem mówiąc, głównym celem robi takie rzeczy? Wszystkie obiekty ustawione w jednej linii powinny być dokładnie przetestowane na prawdziwym urządzeniu, ponieważ mogą powodować wiele problemów, które nie występują na emulatorze. Implementacja kamery dla kamery służy wyłącznie do debugowania/testowania!

Zdecydowanie zaleca się, aby nie spędzać zbyt wiele czasu na uzyskanie tego działania, to nie doprowadzi cię daleko. Nadal nie był testowany na prawdziwym urządzeniu, co byłoby najważniejsze.

Mam nadzieję, że nie zawiedzie pan zbyt wiele z tej odpowiedzi:/

+0

Mimo że zgadzam się z twoją odpowiedzią, muszę powiedzmy, że są pewne sytuacje, w których trudno je przetestować na prawdziwym urządzeniu. W mojej obecnej sytuacji testuję na swoim osobistym telefonie z Androidem w pracy i nie dostałem prawdziwego urządzenia, a jednocześnie nie mam uprawnień do łączenia się z serwerem pracy na moim osobistym telefonie. Moja aplikacja ma zaimplementowany kod zxing OR - i tak, mogę sprawdzić, czy działa na urządzeniu - aby sprawdzić, czy odczytuje go poprawnie, ale nie mogę wysłać tej informacji na serwer - ponieważ nie mogę się z nią połączyć. – ryvianstyron

Powiązane problemy