Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 20 окт 2018, 11:57

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 14 окт 2013, 05:26 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.

В этом уроке:


- делаем снимок
- пишем видео




Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 28 май 2017, 21:49, всего редактировалось 4 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 окт 2013, 17:28 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
добавлю что camera = Camera.open(); будет возвращать null если задняй камеры нету (тестил на 7-м нексусе). Так же и на методе
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));

вообще упадёт, в таких случаях нужно указывать id камеры, а именно 0.

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 31 окт 2013, 06:49 

Зарегистрирован: 26 июн 2013, 04:33
Сообщений: 55
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
похоже что не со всеми телефонами эта программа работает корректно.
Не разбирался в деталях, но проблема в профилях.

К примеру, программа вылетала при попытке записать видео на телефоне SonyErricson RAY (Андроид 4.0.4) с параметром - CamcorderProfile.QUALITY_HIGH, но работает с CamcorderProfile.QUALITY_LOW.
Прилагаю чуть расширенный лог ошибки, может пригодиться:
Код: [ Загрузить ] [ Скрыть ]
  1. 10-31 16:05:05.381: W/InputManagerService(285): Got RemoteException sending setActive(false) notification to pid 21115 uid 10024 
  2. 10-31 16:05:05.571: D/SurfaceFlinger(135): Release buffer at 0xa4878 
  3. 10-31 16:05:08.211: I/MediaRecorderJNI(21205): prepare: surface=0x1b4ac8 (identity=1249) 
  4. 10-31 16:05:08.211: D/CameraSource(152): Camera does not support setVideoSize() 
  5. 10-31 16:05:08.211: D/CameraService(152): getParameter 
  6. 10-31 16:05:08.211: W/ServiceManager(152): Permission failure: com.sonyericsson.permission.CAMERA_EXTENDED from uid=1013 pid=152 
  7. 10-31 16:05:08.211: D/CameraService(152): getParameter 
  8. 10-31 16:05:08.211: W/ServiceManager(152): Permission failure: com.sonyericsson.permission.CAMERA_EXTENDED from uid=1013 pid=152 
  9. 10-31 16:05:08.221: E/CameraSource(152): Failed to set video frame size to 1280x720. The actual video size is 640x480  
  10. 10-31 16:05:08.221: E/MediaRecorder(21205): start failed: -19 
  11. 10-31 16:05:08.221: D/AndroidRuntime(21205): Shutting down VM 
  12. 10-31 16:05:08.221: W/dalvikvm(21205): threadid=1: thread exiting with uncaught exception (group=0x2b542210) 
  13. 10-31 16:05:08.221: E/AndroidRuntime(21205): FATAL EXCEPTION: main 
  14. 10-31 16:05:08.221: E/AndroidRuntime(21205): java.lang.IllegalStateException: Could not execute method of the activity 
  15. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at android.view.View$1.onClick(View.java:3063) 
  16. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at android.view.View.performClick(View.java:3534) 
  17. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at android.view.View$PerformClick.run(View.java:14263) 
  18. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at android.os.Handler.handleCallback(Handler.java:605) 
  19. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at android.os.Handler.dispatchMessage(Handler.java:92) 
  20. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at android.os.Looper.loop(Looper.java:137) 
  21. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at android.app.ActivityThread.main(ActivityThread.java:4441) 
  22. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at java.lang.reflect.Method.invokeNative(Native Method) 
  23. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at java.lang.reflect.Method.invoke(Method.java:511) 
  24. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
  25. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
  26. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at dalvik.system.NativeStart.main(Native Method) 
  27. 10-31 16:05:08.221: E/AndroidRuntime(21205): Caused by: java.lang.reflect.InvocationTargetException 
  28. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at java.lang.reflect.Method.invokeNative(Native Method) 
  29. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at java.lang.reflect.Method.invoke(Method.java:511) 
  30. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at android.view.View$1.onClick(View.java:3058) 
  31. 10-31 16:05:08.221: E/AndroidRuntime(21205):     ... 11 more 
  32. 10-31 16:05:08.221: E/AndroidRuntime(21205): Caused by: java.lang.RuntimeException: start failed. 
  33. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at android.media.MediaRecorder.start(Native Method) 
  34. 10-31 16:05:08.221: E/AndroidRuntime(21205):     at com.example.camerarecord.MainActivity.onClickStartRecord(MainActivity.java:85) 
  35. 10-31 16:05:08.221: E/AndroidRuntime(21205):     ... 14 more 


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 31 окт 2013, 11:41 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
автор просто привёл пример, да нужно расчитывать качество камеры програмно и подставлять

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 15 ноя 2013, 16:53 
Аватар пользователя

Зарегистрирован: 30 сен 2013, 12:18
Сообщений: 345
Благодарил (а): 22 раз.
Поблагодарили: 4 раз.
НЕ работает :
НА планшете с одной камерой вылетает
НА телефоне с двумя камерами черный экран и звук затвора и всё

_________________
Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 15 ноя 2013, 18:06 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
IgNa писал(а):
НЕ работает :
НА планшете с одной камерой вылетает
НА телефоне с двумя камерами черный экран и звук затвора и всё

я выше писал почему не работает

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 мар 2014, 18:27 

Зарегистрирован: 10 окт 2013, 16:54
Сообщений: 8
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Доброго дня!

Ориентация активити: портрет (задана в манифесте).
Держу телефон вертикально (портрено).
Делаю снимок и получаю фотографию перевёрнутую на 90 градусов.

Можно ли сообщить камере нужную ориентацию фотографии?
Или после получения массива загнать его в битмап и обработать?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 апр 2014, 11:03 

Зарегистрирован: 08 фев 2014, 18:15
Сообщений: 134
Благодарил (а): 53 раз.
Поблагодарили: 7 раз.
Здравствуйте. А можно сделать снимок без предварительного просмотра? Например Camera.open() и потом сразу camera.takePicture()? Попробовал-не получилось. Выдает NullPointerException.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 июн 2014, 12:24 

Зарегистрирован: 07 апр 2014, 19:34
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Запускал это код на Samsung Galaxy S Plus ( версия 2.3.6) Видео не пишет , выкидывает ошибку и выбрасывает из приложения .После вызова в методе prepareVideoRecorder() camera.stopPreview() перед camera.unlock() все заработала.

Код: [ Загрузить ] [ Скрыть ]
  1. private boolean prepareVideoRecorder(){ 
  2.          
  3.         camera.stopPreview();   // ДОБАВИТЬ 
  4.         camera.unlock();   
  5.         mRecorder = new MediaRecorder(); 
  6.          
  7.          


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 июн 2014, 16:48 

Зарегистрирован: 01 ноя 2013, 15:45
Сообщений: 14
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
У меня на HTC Desire S (Android 4.2.2) программа заработала, но не совсем корректно даже для ее базовых функций.
Цитата:
onClickStopRecord – обработчик кнопки Stop. Здесь останавливаем запись видео методом stop и освобождаем ресурсы. Кстати, в хелпе к методу stop написано, что он может выдавать RuntimeException, если что-то не так с аудио/видео, которое дали MediaRecorder-у на вход. Имеет смысл эту ошибку ловить и удалять в таком случае записываемый файл, т.к. там будут некорректные данные.

В документации написано, что RuntimeException вылетает в том случае, если вызвать stop сразу после запуска записи. На моем смартфоне это "сразу" растягивается на несколько секунд. И файл, полученный таким образом, действительно можно сразу удалить, потому что он не успевает до конца создаться. Например, у меня видео занимало на карте 17 Кб и, естественно, не запускалось.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 июн 2014, 19:14 

Зарегистрирован: 01 ноя 2013, 15:45
Сообщений: 14
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
А еще после того, как сделан снимок, SurfaceView отображает сделанное фото, а связь с камерой теряется. Вот что нашел в хелпе:
Цитата:
This method is only valid when preview is active (after startPreview()). Preview will be stopped after the image is taken; callers must call startPreview() again if they want to re-start preview or take more pictures. This should not be called between start() and stop().

After calling this method, you must not call startPreview() or take another picture until the JPEG callback has returned.

Вроде как надо опять выполнить startPreview() после camera.takePicture, но что-то из этого ничего хорошего не получается: камера в смартфоне вообще становится недоступной и кучей сыпятся ошибки. Приходится перезагружаться. Как правильно реализовать программу, чтобы после сделанного снимка возвращался просмотр?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 янв 2015, 06:56 

Зарегистрирован: 06 янв 2015, 06:54
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Вы изначально задали имена изображению и видео, тоесть они каждый раз будут пере записывать друг друга? А как сделать чтобы в файл можно было записать не колько изображений? Причем с именами генерирующим имя системой по заданному мной алгоритму?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 янв 2015, 10:18 

Зарегистрирован: 25 июл 2014, 16:10
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте!Делала запись камеры по указанному уроку, учла моменты, которые были указаны в этой теме в качестве возможных проблем, дописала их, но приложение по-прежнему вылетает при запуске. плохо разбираюсь в записи видео, какие ещё параметры можно учесть, исправить? у меня sumsung c android 4.4.2, камера только одна, задняя. Помогите, пожалуйста!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 янв 2015, 06:33 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
Kotlee писал(а):
Здравствуйте!Делала запись камеры по указанному уроку, учла моменты, которые были указаны в этой теме в качестве возможных проблем, дописала их, но приложение по-прежнему вылетает при запуске. плохо разбираюсь в записи видео, какие ещё параметры можно учесть, исправить? у меня sumsung c android 4.4.2, камера только одна, задняя. Помогите, пожалуйста!


Смотрите логи (ошибки будут выделяться красным, еще есть вебинар на эту тему), т.к. "приложение вылетает" очень абстрактно, и вероятность того что кто-то чем-то сможет помочь очень мала.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 28 фев 2015, 13:48 

Зарегистрирован: 18 ноя 2013, 17:53
Сообщений: 122
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.
А если необходимо, что бы снимок снимался только 640*640 или видео писалось только в таком разрешении (т.е. квадратное) то как поступить?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 мар 2015, 21:33 

Зарегистрирован: 11 мар 2015, 21:26
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
denis_po3 писал(а):
А еще после того, как сделан снимок, SurfaceView отображает сделанное фото, а связь с камерой теряется. ...


Я так добавил метод для восстановления связи с Preview (см. 16 строку):

Код: [ Загрузить ] [ Скрыть ]
  1. public void onClickPicture(View view) 
  2.     { 
  3.         camera.takePicture(null, null, new PictureCallback() { 
  4.             @Override 
  5.             public void onPictureTaken(byte[] data, Camera camera) { 
  6.                 try 
  7.                 { 
  8.                     FileOutputStream fos = new FileOutputStream(photoFile); 
  9.                     fos.write(data); 
  10.                     fos.close(); 
  11.                 } 
  12.                 catch (Exception e) 
  13.                 { 
  14.                     e.printStackTrace(); 
  15.                 } 
  16.                 camera.startPreview();     // добавленный метод для установления связи с Preview 
  17.             } 
  18.         }); 
  19.  
  20.     } 


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 20 мар 2015, 20:00 

Зарегистрирован: 09 фев 2015, 17:27
Сообщений: 5
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
как мне сохранять файл фото так что бы его было видно в "Галерее" я уже как только не пытался результат нулевой. Помогите пожалуйста :(


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 30 мар 2015, 09:52 

Зарегистрирован: 30 мар 2015, 09:48
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Вопрос:
Все работает, но при блокировке экрана (нажатие на клавишу выключения) и последующей разблокировке surface view содержит статическое изображение.
Клавиша снятия фото вызывает вылет с ошибкой. Запись видео при этом работает (правда, тоже коряво в плане ориентации)
Что делать, чтобы при блокировке-разблокировке приложение не повисало?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 май 2015, 18:56 

Зарегистрирован: 10 май 2015, 18:51
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Подскажите пожалуйста. Такой вопрос как в этом уроке переделать сохранение фотографии на внутреннюю память. За ранее Благодарю.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 28 мар 2016, 21:46 

Зарегистрирован: 28 мар 2016, 21:40
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте! Если этот форум еще активен, подскажите пожалуйста, при запуске приложения на устройстве не замечали ли вы такое (совместила Ваши 132 и 133 уроки: когда запись видео еще не началась, как телефон не верти, изображение с экрана поступает правильно, не растягивается. Но когда нажимаю запись видео, то изображение искажается. В вертикальной ориентации сжимается по ширине , а в горизонтальной растягивается. С чем это может быть связано? Как можно попробовать это исправить?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB