Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
DjTurxan
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 49
#1

Сделать фото программно без окна камеры - Программирование Android

05.06.2015, 14:07. Просмотров 1230. Ответов 16
Метки нет (Все метки)

Здравствуйте. Столкнулся с такой проблемой, что нужно при нажатии кнопки сразу сделать снимок без появления окна камеры или хотя бы автоматически нажималась кнопка снимка. Как это можно реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2015, 14:07     Сделать фото программно без окна камеры
Посмотрите здесь:
Android Некорректный размер фото с камеры
Android Как сохранить фото с камеры напрямую во внутреннюю директорию приложения?
Android Не могу программно открыть папку с фото
Android Включение GPS программно без подтверждения пользователем
Android Можно ли сделать программно root на Android?
Android как программно сделать скриншот экрана
Android Открыть сессию Facebook по token без окна авторизации
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Welemir1
Мечтатель
318 / 294 / 102
Регистрация: 30.03.2015
Сообщений: 1,285
05.06.2015, 15:38     Сделать фото программно без окна камеры #2
снимок экрана? снимок веб-камерой? кнопка на форме или на веб-камере? а вы можете реализовать С появлением "окна камеры"?
Pablito
2414 / 1859 / 583
Регистрация: 12.05.2014
Сообщений: 6,596
Завершенные тесты: 1
05.06.2015, 18:15     Сделать фото программно без окна камеры #3
ну если не через интенты делать
примеров в сети вагон
нет, не могу дать готовый код, сам найдешь

Добавлено через 2 часа 7 минут

Не по теме:

упс, это не раздел андроида, тогда отбой

DjTurxan
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 49
07.06.2015, 10:09  [ТС]     Сделать фото программно без окна камеры #4
Нужно сделать снимок передней камерой телефона. Где-то прочитал, что андроид не позволяет делать снимки без preview камеры, но что-то не верится в это. Неужели никаких обходов нету?)

Цитата Сообщение от Паблито Посмотреть сообщение
упс, это не раздел андроида, тогда отбой
Как раз об андроиде и идет речь) Прошу помочь, это как бы селфи, которое делается при нажатии на Button
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,724
07.06.2015, 23:17     Сделать фото программно без окна камеры #5
DjTurxan, думаю, даже если бы снимок делался после появления preview, то это самое preview можно было бы закрыть каким-нибудь прямоугольником или уменьшить до размеров точки.
Вам следует изучить Camera API. Я как раз в процессе. Почитайте, например, http://startandroid.ru/ru/uroki/vse-...hem-video.html. В Camera API очень много мути, к тому же, для разных устройств могут быть совершенно разные баги. И не во всех устройствах есть передняя камера или вообще какая-либо. Вот впечатляющий список известных багов одной библиотеки (увидите внизу): https://github.com/commonsguy/cwac-camera.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
08.06.2015, 08:16     Сделать фото программно без окна камеры #6
без превью не возможно
можно сделать превью размером 1х1 и ее не будет видно
но она все равно должна быть на экране

Добавлено через 3 минуты
не получается совместить превью и glsurface
DjTurxan
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 49
09.06.2015, 11:21  [ТС]     Сделать фото программно без окна камеры #7
Окей, пусть даже превью будет на весь экран) Мне главное нужно, чтобы происходила автоматическая съемка. Нажал на кнопку, появился превью - сам сфоткал и закрылся. Это возможно сделать, ребят?)
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
09.06.2015, 13:03     Сделать фото программно без окна камеры #8
можно, а в чем трудность? можно сделать чтобы фоткал каждые пять сек и сохранял на карту памяти
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,724
09.06.2015, 19:02     Сделать фото программно без окна камеры #9
DjTurxan, ещё раз: думаю, preview можно закрыть сверху другими компонентами. Например, нарисовать прямоугольник или использовать FrameLayout с Frame'ами.
По поводу фотографирования - вам нужно код найти?
DjTurxan
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 49
10.06.2015, 00:58  [ТС]     Сделать фото программно без окна камеры #10
Цитата Сообщение от CoolMind Посмотреть сообщение
По поводу фотографирования - вам нужно код найти?
Именно!) Весь интернет перелазил, Толком ничего не нашел. Где-то прочитал, что андроид не разрешает такое в целях безопасности и это прочитал уже под конец, и засело в голове)
Где можно, даже если не код, найти информацию про автосъемку, т.е. без вмешательства человека? Например, как сказал Valakin, фоткать через определенный промежуток времени таймером:
Цитата Сообщение от Valakin Посмотреть сообщение
можно, а в чем трудность? можно сделать чтобы фоткал каждые пять сек и сохранял на карту памяти
Буду очень благодарен любой помощи!)
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,724
10.06.2015, 10:20     Сделать фото программно без окна камеры #11
Цитата Сообщение от DjTurxan Посмотреть сообщение
Где-то прочитал, что андроид не разрешает такое в целях безопасности
Возможно, но ведь существуют программы, которые препятствуют краже смартфона, они могут и фотку злоумышленника сделать, и в Интернет выложить.

Добавлено через 31 минуту
http://www.vogella.com/tutorials/And...rial_cameraapi
https://github.com/commonsguy/cwac-c...ameraView.java
Pablito
2414 / 1859 / 583
Регистрация: 12.05.2014
Сообщений: 6,596
Завершенные тесты: 1
10.06.2015, 10:23     Сделать фото программно без окна камеры #12
склепал на скорую руку код, убрал все лишнее, все проверки
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        final Camera c = Camera.open();
        Log.i("===", "" + c);
 
        findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                c.takePicture(null, null, mPicture);
 
            }
        });
    }
 
    private Camera.PictureCallback mPicture = new Camera.PictureCallback() {
 
        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
 
            File pictureFile = getOutputMediaFile();
 
            try {
                FileOutputStream fos = new FileOutputStream(pictureFile);
                fos.write(data);
                fos.close();
            } catch (FileNotFoundException e) {
                Log.d("===", "File not found: " + e.getMessage());
            } catch (IOException e) {
                Log.d("===", "Error accessing file: " + e.getMessage());
            }
        }
    };
 
    private static File getOutputMediaFile() {
        File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES), "MyCameraApp");
 
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        File mediaFile;
        mediaFile = new File(mediaStorageDir.getPath() + File.separator +
                "IMG_" + timeStamp + ".jpg");
        return mediaFile;
    }
 
}

Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
    <Button android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="START"/>

Кликните здесь для просмотра всего текста
XML
1
2
3
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-feature android:name="android.hardware.camera" />

у меня на эмуляторе делает снимки на ура, на устройстве проверить пока не могу
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,724
22.06.2015, 11:46     Сделать фото программно без окна камеры #13
Well, recently I've continued camera app again. Thanks for this topic as I remembered that frames cannot be captured without UI (SurfaceView).
I found that there are some changes: starting from API 11 a component SurfaceTexture is available.
See here:
http://stackoverflow.com/questions/5...t-surface-view
http://stackoverflow.com/questions/2...xtureview?lq=1
So I think it would be possible to capture frames without showing them in 1x1 pixel box.

Добавлено через 46 минут
Also you may look at this page: http://stackoverflow.com/questions/2...t-preview?lq=1, it describes how to take a picture with a temporary SurfaceView.

Добавлено через 17 часов 9 минут
O-la-la, it seems a SurfaceView takes too much CPU time for it's maintenance. I measured time for a fullscreen SurfaceView (130 ms per frame) and 1x1 dp (60 ms per frame).
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
22.06.2015, 13:13     Сделать фото программно без окна камеры #14
SurfaceView чем от превьюшки отличается? (его на экран можно не выводить?)
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,724
22.06.2015, 13:36     Сделать фото программно без окна камеры #15
Valakin, SurfaceView выводится на экран обязательно. Правда, можно работать с не-UI потоками. Поэкспериментирую, может, можно как-то его не выводить.
SurfaceTexture, я так понял, можно не выводить на экран.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
22.06.2015, 13:56     Сделать фото программно без окна камеры #16
CoolMind, Спасибо, опечатка, хотел написать SurfaceTexture Надо проверить, без превьюшки было бы здорово.

Добавлено через 15 минут
There may be other reasons to "hide" the preview, but keep in mind that the purpose of the API initially was to make sure that the end user sees whatever arrives from the camera to the application, for privacy and security reasons.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2015, 21:23     Сделать фото программно без окна камеры
Еще ссылки по теме:
Как программно удалить кнопку которую программно создал но только если она уже существует Android
Android Можно ли сделать на андроид приложение с активностью не во весь экран, а вроде окна на винде?
Android Как сделать приложение без единого активити
Как сделать скриншот экрана без прав Root-а? Android
Как сделать запрос на URL без нажатия кнопки? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,724
23.06.2015, 21:23     Сделать фото программно без окна камеры #17
Valakin, да, согласен. Видимо, с этой целью и придумали SurfaceView. Беглым поиском пока не нашёл хорошего решения, позже посмотрю, если будет желание. Что-то пишут и здесь: http://stackoverflow.com/questions/8...ame-on-android
Yandex
Объявления
23.06.2015, 21:23     Сделать фото программно без окна камеры
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru