Próbuję utworzyć widok powierzchni dla kamery, aby wyświetlał się on na powierzchni w dowolnym miejscu w widoku kamery. W tej chwili wszystko, co widzę w widoku mojego aparatu, to widok z czarnego ekranu. Próbowałem szukać w Google i tutaj, ale do tej pory nie znalazłem tego, czego szukam. Każdy może zasugerować mi jakiś pomysł.Widok powierzchni aparatu z Androidem
Odpowiedz
Napisałem zajęcia to może ci pomóc.
public class Preview_can_work extends Activity {
private SurfaceView surface_view;
private Camera mCamera;
SurfaceHolder.Callback sh_ob = null;
SurfaceHolder surface_holder = null;
SurfaceHolder.Callback sh_callback = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
surface_view = new SurfaceView(getApplicationContext());
addContentView(surface_view, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
if (surface_holder == null) {
surface_holder = surface_view.getHolder();
}
sh_callback = my_callback();
surface_holder.addCallback(sh_callback);
}
SurfaceHolder.Callback my_callback() {
SurfaceHolder.Callback ob1 = new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
mCamera.release();
mCamera = null;
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
mCamera.startPreview();
}
};
return ob1;
}
}
w oczywisty kopiowania plików to kod o pozwolenie kamery
<uses-permission android:name="android.permission.CAMERA"/>
Objaśnienie:
SurfaceView jest typem widoku, który zawiera SurfaceHolder. SurfaceHolder posiada powierzchnię, na której możemy wyświetlać nasze media (zazwyczaj ramki).
mCamera to obiekt Camera, który będzie zawierał instancję kamery.
Jeśli chcesz zachować domyślną instancję kamery, możesz po prostu wywołać Camera.open();
Aparat mCamera = Camera.open();
Teraz masz otwartą kamerę lub masz domyślną instancję kamery. Teraz musisz uchwycić klatki z kamery i wyświetlić ją na powierzchni. Ale nie można wyświetlić go bez żadnej powierzchni. Tutaj surfaceView zapewnia surfaceHolder i surfaceHolder zapewnia powierzchnię do wyświetlania ram kamery. Teraz, gdy powierzchnia zostanie utworzona, trzy funkcje wywołania zwrotnego zostaną wywołane.
1. public void surfaceCreated(SurfaceHolder holder)
2. public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
3. public void surfaceDestroyed(SurfaceHolder holder)
Uwaga: - Powierzchnia zostanie zniszczona, gdy aplikacja uruchomi się w trybie pauzy.
surfaceCreated: surfaceCreated to funkcja wywołania zwrotnego, która zostanie wywołana po utworzeniu powierzchni. W ten sposób można otworzyć aparat i ustawić inne atrybuty.
surfaceChanged: To będzie nazywać się co najmniej raz, kiedy twoja powierzchnia zostanie utworzona. Następnie zostanie wywołany za każdym razem, gdy zmieni się powierzchnia (w obrocie urządzenia). Tutaj możesz rozpocząć wyświetlanie podglądu, ponieważ twoja powierzchnia już została utworzona.
surfaceDestroyed: To będzie się nazywać za każdym razem, gdy powierzchnia zniszczy.Teraz, jeśli nie masz powierzchni, a następnie możesz wyświetlać ramki do kamer, zwolniłem kamerę, używając funkcji mCamera.release(). Jest to bardzo ważne, ponieważ jeśli twoja aktywność będzie wstrzymana, a każda inna próba otworzy kamerę, nie będzie mogła go otworzyć, ponieważ masz już otwartą kamerę. Kamera jest udostępnionym zasobem, więc jednorazowo może z niej korzystać tylko jedna aplikacja. Więc pamiętaj, że zawsze, gdy otworzysz kamerę, zawsze ją zwolnij.
stopPreview: Po uruchomieniu podglądu aparat rozpoczyna przechwytywanie klatek i wyświetlanie ich na powierzchni. Jeśli twoja powierzchnia uległa zniszczeniu, musisz zatrzymać przechwytywanie klatek z aparatu, aby móc wywołać mCamera.stopPreview.
Producent Shure dodano uprawnienie:
<uses-permission android:name="android.permission.CAMERA"/>
Także te właściwości okna:
getWindow().setFormat(PixelFormat.TRANSLUCENT);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
post jakiś kod jeśli to nie zadziała, aby pomóc
Dzięki, dodałem już pozwolenie zgodnie z sugestią; i myślałem o użyciu 'surfaceChanged'? W tej chwili wszystko, co widzę na powierzchni mojej kamery jest czarne ..... Nie rozumiem dlaczego. – Kitaro
- 1. Przeźroczyste płótno z Androidem (widok powierzchni)
- 2. Kadrowanie aparatu z Androidem
- 3. Podgląd aparatu z Androidem Rozmiar wydania
- 4. Podgląd aparatu z Androidem Przełącz między kamerami
- 5. Podgląd aparatu z Androidem - jak "zamrozić" aparat?
- 6. Widok kalendarza z Androidem
- 7. Powierzchni aparatu AndroidUmieszany jest stale nazywany
- 8. Jak przeskalować niestandardowy widok (widok powierzchni)
- 9. Jak automatycznie ustawić ostrość aparatu z Androidem?
- 10. Samouczek dotyczący podglądu aparatu z Androidem
- 11. zagnieżdżony widok recyclerview z Androidem
- 12. Jak przechwytywać surowy obraz z aparatu z Androidem
- 13. Widok obrazu z Androidem Skala animacji
- 14. Jak wyciszyć dźwięk migawki aparatu na telefonie z Androidem
- 15. Prześlij zdjęcie z aparatu do serwera PHP
- 16. Jak mogę znaleźć folder zdjęć z aparatu na telefonie z Androidem?
- 17. Przesyłanie strumieniowe wideo na żywo z aparatu z Androidem na serwer
- 18. Jak znaleźć kontury klatki z aparatu z Androidem i przekonwertować je na ciała box2d?
- 19. Zapisywanie obrazu z aparatu na urządzeniu z Androidem do lokalnego przechowywania
- 20. DataBinding z Androidem Dialog
- 21. Animacja migotania z Androidem
- 22. Konwertuj bitmapę na matę po przechwytywaniu obrazu za pomocą aparatu z Androidem
- 23. Przeprowadzka z Wiimote do aparatu?
- 24. Jak przycinać obrazy z aparatu
- 25. Aparaty aparatu Android z przycięciem
- 26. Wybierz zdjęcie z galerii i aparatu przez widok internetowy nie działa w systemie Android 6.0 Marshmallow
- 27. Jak ustawić rozmiar niestandardowego widoku powierzchni?
- 28. Obliczanie powierzchni wielokąta
- 29. Polecenie color matplotlib plot_surface z gradientem powierzchni
- 30. iPad orientacji launch kiedy płasko na powierzchni
Dzięki Bharat, dam z siebie wszystko! dzięki jeszcze raz. Czy ktoś zna dobry artykuł, w którym mogę przeczytać o "Aparat nie działa podczas pracy w emulatorze"? Czy to prawda? – Kitaro
Tak naprawdę podczas tworzenia emulatora musisz dodać do niego kamerę, więc myślę, że to zadziała. Spróbuję i dam ci znać .. –
Okej, więc nie potrzebujemy urządzenia, aby móc korzystać z kamery, aby oglądać obraz na żywo? Coś artykułu przeczytałem mówiąc, że nie możemy uruchomić kamery w emulatorze, ale nie jestem pewien, czy to zostało rozwiązane. Proszę daj mi znać. Dzięki. – Kitaro