Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
DjTurxan
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 49
#1

Сделать фото программно без окна камеры

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

Здравствуйте. Столкнулся с такой проблемой, что нужно при нажатии кнопки сразу сделать снимок без появления окна камеры или хотя бы автоматически нажималась кнопка снимка. Как это можно реализовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2015, 14:07
Ответы с готовыми решениями:

Возможно ли без открытия камеры на телефоне сделать фотографию?
Здравствуйте, делаю приложение что-то типа голосового помощника по частичному...

Некорректный размер фото с камеры
доброго времени всем. возникла у меня проблемка, делаю я фото с камеры но оно...

Как сохранить фото с камеры напрямую во внутреннюю директорию приложения?
Стартую Intent камеры, добавляю Extra с Uri файла, куда надо сохранить снимок:...

Не могу программно открыть папку с фото
Здравствуйте, написал свой файловый менеджер, но при запуске должна открыться...

Включение GPS программно без подтверждения пользователем
В интернете есть темы, но чета они не рабочие:) Или из жопы руки.. Направьте...

16
Welemir1
Автоматизируй это!
819 / 553 / 229
Регистрация: 30.03.2015
Сообщений: 2,161
05.06.2015, 15:38 #2
снимок экрана? снимок веб-камерой? кнопка на форме или на веб-камере? а вы можете реализовать С появлением "окна камеры"?
0
Pablito
2707 / 2154 / 731
Регистрация: 12.05.2014
Сообщений: 7,521
Завершенные тесты: 1
05.06.2015, 18:15 #3
ну если не через интенты делать
примеров в сети вагон
нет, не могу дать готовый код, сам найдешь

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

Не по теме:

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

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

Цитата Сообщение от Паблито Посмотреть сообщение
упс, это не раздел андроида, тогда отбой
Как раз об андроиде и идет речь) Прошу помочь, это как бы селфи, которое делается при нажатии на Button
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
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.
0
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 738
08.06.2015, 08:16 #6
без превью не возможно
можно сделать превью размером 1х1 и ее не будет видно
но она все равно должна быть на экране

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

Добавлено через 31 минуту
http://www.vogella.com/tutorials/And...rial_cameraapi
https://github.com/commonsguy/cwac-c...ameraView.java
0
Pablito
2707 / 2154 / 731
Регистрация: 12.05.2014
Сообщений: 7,521
Завершенные тесты: 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" />

у меня на эмуляторе делает снимки на ура, на устройстве проверить пока не могу
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
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).
0
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 738
22.06.2015, 13:13 #14
SurfaceView чем от превьюшки отличается? (его на экран можно не выводить?)
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
22.06.2015, 13:36 #15
Valakin, SurfaceView выводится на экран обязательно. Правда, можно работать с не-UI потоками. Поэкспериментирую, может, можно как-то его не выводить.
SurfaceTexture, я так понял, можно не выводить на экран.
1
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 738
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.
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
23.06.2015, 21:23 #17
Valakin, да, согласен. Видимо, с этой целью и придумали SurfaceView. Беглым поиском пока не нашёл хорошего решения, позже посмотрю, если будет желание. Что-то пишут и здесь: http://stackoverflow.com/questions/8...ame-on-android
0
23.06.2015, 21:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2015, 21:23

как программно сделать скриншот экрана
как програмно сделать скриншот экрана?

Можно ли сделать программно root на Android?
можно ли сделать программно root на android?? И как если можно??

Открыть сессию Facebook по token без окна авторизации
Подскажите, каким образом правильно использовать метод...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

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