Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Не работает камера - черный экран

Доброго времени суток!

Пишу первое приложение, хотел использовать в нем Zbar, не получаю ответ от камеры - черный экран.

В Манифесте есть разрешения:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
Использую ConstraintLayout со следующим элементом для камеры:

<FrameLayout
android:id="@+id/cameraPreview"
android:layout_width="240dp"
android:layout_height="240dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.031"
android:background="@android:color/white"/>
MainActivity во вложении
Ответ: Не уверен, что проблема в динамических разрешениях...
Взял для теста следующие исходники:



Результат тот же - вместо preview камеры получаю квадрат малевича....
Вопрос: Черный экран в эмуляторе Android Studio

Добрый вечер!

Запускаю эмуляторе Android Studio, там только черный экран в виде смартфона без кнопок. В Nexus 4 на черном экране появляется надпись Android, в Nexus 5 просто черный экран. Если выбрать без скина, то появляется черный прямоугольный экран справа кнопки - активны только кнопки звука и питания (при нажатии ничего не происходит). Горячие клавиши клавиатуры (home, ecs, F2,F3 и т.д.) - ничего не происходит. Эмулятор пишет running.
Подключил устройство - загружает на нем кнопку, edit и текст - так и должно быть, стало быть работает.

Но хотелось бы не подключать все время устройство, а пользоваться и эмулятором тоже.

Подскажите, пожалуйста, что можно сделать?

Посмотрите здесь с других тем прочитал - не нашел ответа.

Android Эмулятор не загружается
Эмулятор Android
Android Не запускается эмулятор
Android Не запускается эмулятор
Android Не запускается эмулятор в Android Studio
Не загружается приложение в эмулятор Android Studio Android
Не создается эмулятор на Android Studio Android
Android Studio. Установка приложения на эмулятор. Application Installation Failed Android
Android studio настройка Android
Android Создание эмулятора Android
Android studio Android
Android Меню Android Manifest в Android Studio
Android Studio Android

и прочие читал.
Ответ: все, кто в здравом уме - используют что-либо вместо стандартного эмулятора
Вопрос: Черный экран после загрузки на fly era nano 10

При включении телефона после завершения загрузки горит просто черный экран(экран работает,но он черный и не реагирует) hard reset не помогает.Телефон-fly era nano 10
Ответ: Nastyya, пробуйте пробуйте прошивку залить по новой. Желательно придерживаться такого алгоритма: Hard Reset --> Полное форматирование --> Залить прошивку с привлечением ПК --> Hard Reset.
Вопрос: Первое приложение (Delphi XE) - показывает чёрный экран

Доброго времени суток
стоит delphi XE5,android-ndk-r13b-windows-x86,platforms->android-17
кидаю простую кнопку
procedure TForm2.Button1Click(Sender: TObject);
begin
ShowMessage('Hello, Android');
end
получаю Project2.apk
кидаю на телефон Android v4.4.4
преложение открывается с черным экраном,подскажите в чем проблема
Ответ: Вот Вы кинули кнопку. Где она у Вас отображается? Для начала опишите параметры окна - цвет окна, панелей, и потом только обработчик ButtonClick..

Пока Вы на кнопку не нажали, ButtonClick не запустится.
Вопрос: Эмулятор android выдает черный экран

Решил попробывать разработать что-то для Андроида. Создал первый проект в Xamarin, ничего не меняя в нем запустил. Проект успешно компилируется и запускается эмулятор, ничего кроме черного экрана не выводя. Пробывал собирать сам AVD, на данный момент он в таком состоянии.
Есть подозрения на ошибки при сборке. В окне вывода встречаются строки
Код
ERROR: resizing partition e2fsck failed with exit code 8 emulator:
WARNING: userdata partition is resized from 1665 M to 1666 M
При попытки разобраться с этой ошибкой, многочисленные советы по изменению конфигурации AVD и проверке Android SDK не помогают. В чем может быть проблема?
Ответ: нексус S попробуй.
Вопрос: Не работает камера

Пытаюсь разобраться с работой камеры и не получается.
Всё работает в Андроид4 (любой код), но в шестой версии приложение падает, хотя стоит Try-Catch
Пытаюсь запустить камеру в самом примитивном варианте уже и всё равно не получается

Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(captureIntent, CAMERA_CAPTURE);

В манифесте разрешил всё, что только можно:
<uses-permission android:name="android.permission.CAMERA" android:required="true"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera2.full" />
Ответ:
Сообщение от ExFau$t
Пользователю вообще до фени почему убился твой поток, он просто взял и удалил приложение.
Вот гад!
Да чтоб ему обрывки моего убитого потока в ватсапе являлись по ночам!
Вопрос: Alarmmanager - увеличивается интервал между вызововами при выключении экрана

Столкнулся с проблемой есть 2 смартфона на одном все работает безупречно и сервис запускается каждые 20 сек а на втором все работает только пока экран светится выключил экран и вместо 20 секунд - 3 минуты примерно. Насколько я читал так не только у меня. Какая есть замена Alarmmanager или из-за энергосбережения фоновая задача в принципе невозможна? Но как тогда писать gps трекер?

Добавлено через 1 минуту
Да и на обоих смартфонах android 5.0.2

Добавлено через 9 минут
Дополнительная особенность. Если после энного времени с выключенным экраном включить экран, то после того как появится первый 3 минутный запуск, то после него пока экран светится выполняются 20 секундные стабильно.

Такое чувство что смартфон засыпает только для чего тогда нужен AlarmManager.RTC_WAKEUP да и вообще какой смысл в AlarmManager?????

Добавлено через 3 часа 55 минут
В шестом андроиде насколько я понял есть временные ограничения на выполнение AlarmManager

Поэтому явно нужна альтернатива, чем можно его заменить?
Ответ: Да я именно так и сделал, добавил в исключения. Тем более что моя программа GPS трекер и это допускает такое исключение. Пока проверяю, но вроде стало работать нормально
Вопрос: Переход на другой экран

Вот такой вопрос: У меня есть активности : 1 МЕНЮ; 2 ВВод данных; и в зависимости от введных данных переход на 3 активность или 4 активность, я попытался реализовать так

Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Intent intent;
 
if(i == true && r != 5) {
            intent = new Intent(MainActivity2Activity.this, activityres.class );
            intent.putExtra("suma", Sum);
            intent.putExtra("R", r.toString());
            startActivity(intent);
 
            
        }
        else if (i == true && r == 5)
        {
            intent = new Intent(MainActivity2Activity.this, MainActivity3.class);
            intent.putExtra("suma", Sum);
            startActivity(intent);
          
        }
        else{
            Toast t = Toast.makeText(getApplicationContext(),"Ошибка.", Toast.LENGTH_LONG);
            i = true;
            t.show();
        }
Это все в методе onClick при первом условии все работает хорошо данные передаются активность создается, при ВТОРОМ условии в эмуляторе появляется черный экран и все так может стоять часами и ничего не появится. Поискал в нете но подобной проблемы не нашел. Только плиз не скидывайте ссылки на статьи типа "как сделать переход на другой экран", я их пересмотрел не малое множество но именно свою ситуацию не нашел. Жду вашей помощи, а то уже 3 день на этом завис.
Ответ: Уже сколько раз говорил. Не для новичков те сайты, не для новичков. Для новичков в Android, но не в программировании вообще.
asffix, начните вот с этого -Java Полное руководство, 8-е издание Герберт Шилдт, многое проясниться.
Там и про пакеты, и про импорт, и вообще, так сказать обо всем.
P.S. Перейти на вторую активити очень просто.
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
public void onClick(View view) {
    Intent intent = new Intent(MainActivity.this, TwoActivity.class);
    startActivity(intent);
}
Само собой вторая активность должна быть добавлена в манифесте.
Вообще у Android много всего есть

Опять же можно и свои добавлять.
Вопрос: Рисовка на экран. (среда разработки - Android Studio)

Доброго времени суток! Подскажите, пожалуйста. Хочу писать для андроида приложения с собственным графически интерфейсом. Выбрал Android Studio. Поражает хорошо проработанные Layout-ы, всё очень удобно можно расставлять, НО! Всё это конечно хорошо. Вопрос: а можно ли работать непосредственно с экраном Без Layout-ов и ImageView? А так, как скажем в старой доброй винде - взяли окно, написали для него обработчик, создали таймер, и каждый раз его отрисовываем сами, что хотим там и рисуя всякими ручками и кистями. Возможно ли для андроид Activity сделать что-то похожее? Если да, то какими средствами.
Ответ: а что тебе мешает сделать это с помощью существующих layout-ов и прочих вещей? Они позволяют сделать те же вещи, и значительно легче нежели рисовать все самому
Вопрос: Не удаётся проинициализировать камеру

Коллеги,пытаясь создать кастомную камеру столкнулся со следующей проблемой:
при попытке получить доступ к камере в методе
Код Java(TM) 2 Platform Standard Edition 5.0
1
camera = Camera.open(CAMERA_ID);
выбрасывается исключение java.lang.RuntimeException: Fail to connect to camera service, таким образом объект camera принимает значение null и в дальнейшем с ним нельзя работать.
Результат гугления говорит только о том, что в AndroidManifest должны быть указаны соответствующие для камеры разрешения:
Код XML
1
2
3
4
5
    
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
Все эти разрешения у меня есть, экспериментировал с ними, но проблему это не решило.
Код Java(TM) 2 Platform Standard Edition 5.0
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
Ниже приведён полный код моего класса с камерой.Может быть кто-то подскажет в чём я накосячил?
 
public class CustomCamera extends Activity {
 
    /** Виджет для предпросмотра фотографий */
    SurfaceView sv;
    /** Адаптер для SurfaceView */
    SurfaceHolder holder;
    /** Объект для получения информации об изменениях в surface */
    HolderCallback holderCallback;
    /** Объект для доступа к камере */
    static Camera camera = null;
    /** Наличие камеры */
    private boolean hasCamera = false;
    Button shotButton;
 
    final int CAMERA_ID = 0;
    final boolean FULL_SCREEN = true;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
 
        // Без заголовка
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        // Полноэкранный режим
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        // Устанавливаю разметку
        setContentView(R.layout.custom_camera_activity2);
 
        shotButton = (Button) findViewById(R.id.btnTakePicture);
        shotButton.setOnClickListener(new View.OnClickListener() {
            // Отправляем изображение при нажатии на кнопку сфотографировать
            @Override
            public void onClick(View v) {
                if (hasCamera) {
                    camera.takePicture(null, null, new Camera.PictureCallback() {
                        @Override
                        public void onPictureTaken(byte[] data, Camera camera) {
                            try {
                                Intent intent = new Intent();
                                intent.putExtra("data", data);
                                setResult(RESULT_OK, intent);
                                finish();
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    });
                }
            }
        });
 
        // Инициализирую виджет для предпросмотра
        sv = (SurfaceView) findViewById(R.id.surfaceView);
        // Получаю адаптер для виджета предпросмотра
        holder = sv.getHolder();
        // Устанавливаю тип адаптера
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
 
        holderCallback = new HolderCallback();
 
        // Узнаём количество камер
        int numCameras = Camera.getNumberOfCameras();
        if (numCameras > 0) {
            hasCamera = true;
        }
 
        holder.addCallback(holderCallback);
    }
 
    // Обработка повторного включения камеры
    @Override
    protected void onResume() {
 
        super.onResume();
        // Если есть камера
        if (hasCamera) {
            // Получаем доступ к камере
            try {
                camera = Camera.open(CAMERA_ID);
                // Настраиваем размер surface
                setPreviewSize(FULL_SCREEN);
            } catch (Exception e) {
                e.printStackTrace();
                Log.d(Constant.DEBUG_TAG, "Не удалось получить доступ к камере");
            }
        } else {
            Toast.makeText(this, "В устройстве отсутствует камера", Toast.LENGTH_SHORT).show();
            Log.d(Constant.DEBUG_TAG, "В устройстве отсутствует камера");
        }
    }
 
    // Обработка выключения камеры
    @Override
    protected void onPause() {
 
        super.onPause();
        if (camera != null) {
            // Останавливаем предпросмотр
            camera.stopPreview();
            // Освобождаем камеру для использования другими приложениями
            camera.release();
        }
        camera = null;
    }
 
    class HolderCallback implements SurfaceHolder.Callback {
 
        // Начало трансляции изображения
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
 
            try {
                // Подключаем камеру к адаптеру предпросмотра
                camera.setPreviewDisplay(holder);
                // Запускаем камеру
                camera.startPreview();
            } catch (NullPointerException npe) {
                npe.printStackTrace();
                Log.d(Constant.DEBUG_TAG, "Объект camera не проинициализирован в методе onResume");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
 
        // Был изменен формат или размер surface
        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
 
            try {
            // Останавливаем камеру
            camera.stopPreview();
            // Настраиваем камеру с учетом поворота устройства
            setCameraDisplayOrientation(CAMERA_ID);
                // Подключаем камеру к адаптеру предпросмотра
                camera.setPreviewDisplay(holder);
                // Запускаем камеру
                camera.startPreview();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
 
        // surface более недоступен
        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
        }
    }
 
    // Определяем размеры surface с учетом экрана и изображения с камеры
    void setPreviewSize(boolean fullScreen) {
 
        // Получаем размеры экрана
        Display display = getWindowManager().getDefaultDisplay();
        boolean widthIsMax = display.getWidth() > display.getHeight();
 
        // Определяем размеры превью камеры
        Size size = camera.getParameters().getPreviewSize();
 
        RectF rectDisplay = new RectF();
        RectF rectPreview = new RectF();
 
        // RectF экрана, соотвествует размерам экрана
        rectDisplay.set(0, 0, display.getWidth(), display.getHeight());
 
        // RectF первью
        if (widthIsMax) {
            // Превью в горизонтальной ориентации
            rectPreview.set(0, 0, size.width, size.height);
        } else {
            // Превью в вертикальной ориентации
            rectPreview.set(0, 0, size.height, size.width);
        }
 
        Matrix matrix = new Matrix();
        // Подготовка матрицы преобразования
        if (!fullScreen) {
            // Если превью будет "втиснут" в экран (второй вариант из урока)
            matrix.setRectToRect(rectPreview, rectDisplay,
                    Matrix.ScaleToFit.START);
        } else {
            // если экран будет "втиснут" в превью (третий вариант из урока)
            matrix.setRectToRect(rectDisplay, rectPreview,
                    Matrix.ScaleToFit.START);
            matrix.invert(matrix);
        }
        // преобразование
        matrix.mapRect(rectPreview);
 
        // установка размеров surface из получившегося преобразования
        sv.getLayoutParams().height = (int) (rectPreview.bottom);
        sv.getLayoutParams().width = (int) (rectPreview.right);
    }
 
    // Устанавливаем ориентацию предпросмотра
    void setCameraDisplayOrientation(int cameraId) {
        // определяем насколько повернут экран от нормального положения
        int rotation = getWindowManager().getDefaultDisplay().getRotation();
        int degrees = 0;
        switch (rotation) {
            case Surface.ROTATION_0:
                degrees = 0;
                break;
            case Surface.ROTATION_90:
                degrees = 90;
                break;
            case Surface.ROTATION_180:
                degrees = 180;
                break;
            case Surface.ROTATION_270:
                degrees = 270;
                break;
        }
 
        int result = 0;
 
        // Получаем инфо по камере cameraId
        CameraInfo info = new CameraInfo();
        Camera.getCameraInfo(cameraId, info);
 
        // Задняя камера
        if (info.facing == CameraInfo.CAMERA_FACING_BACK) {
            result = ((360 - degrees) + info.orientation);
        } else
            // передняя камера
            if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
                result = ((360 - degrees) - info.orientation);
                result += 360;
            }
        result = result % 360;
        camera.setDisplayOrientation(result);
    }
}
Ответ: Паблито, у меня та же тема. Проверял на Android 5 - всё работает. Взял устройство с Android 2.3.3, перезагружал - не работает. Вот так ещё бывает.

Добавлено через 1 час 14 минут
Короче, тема такая. По многочисленным сообщениям с SO камера некорректно работает в портретном режиме. Запустил в пейзажном - заработало.

Добавлено через 45 минут
Ну это уже смешно. Запускаешь в пейзажном, крутишь устройство - всё работает, пока не станет в портретном. Дальше изображение подвисает. Затем снова работает, когда крутишь дальше. Когда устройство становится "вверх ногами", изображение может неожиданно перевернуться зеркально.

Добавлено через 56 секунд
Не зря задание состоит в поиске багов. Авторы топиков на SO и не знали, сколько их можно словить.