Почему вместо скриншота черный экран

Приветствую всех!

Скриншоты неотъемлемая часть работы за компьютером, и каждому из нас иногда необходимо их делать. И совсем печально, когда Print Screen почему-то не срабатывает — хочется просто разбить клавиатуру. Однако, делу это не поможет.

Можно, конечно, сфотографировать экран на телефон или фотоаппарат, однако, качество картинки будет хуже. Можно поступить еще более радикальней, как блондинка на картинке-превью слева (но это уж совсем смешно ).

В этой статье предложу несколько вариантов, как можно решить сию проблему более простыми и толковыми способами. Даже если у вас кнопка совсем "выдрана" с корнем и ее просто физически нет — всё равно, эта статья должна вам помочь!

Что можно сделать при проблемах с Print Screen

1) Для начала проверить спец. клавиши

На некоторых клавиатурах (видел только на ПК) встречается специальная клавиша F Lock. При ее нажатии — меняется значение некоторых спец. и функциональных клавиш. Если у вас есть подобная клавиша — попробуйте отключить ее.

Клавиша F Lock (чаще всего встречается на классической клавиатуре)

Что касается ноутбуков , то у них часто все эти клавиши (F1 — F12, Print Screen, Pause и пр.) имеют двойное значение, которое можно задействовать с помощью клавиши Fn (иногда Alt). Таким образом, попробуйте нажать следующее сочетание клавиш:

  • Fn+Print Screen (а затем откройте Paint и проверьте, вставится ли скрин);
  • Alt+Print Screen

Fn+Esc — изменяют режим работы Fn

Еще один момент заключается в том, что клавиша Fn может просто не работать! Например, ее можно отключить в BIOS (проверьте ее работу с другими функциональными клавишами). Основные причины проблем с клавишей Fn описаны в этой статье: https://ocomp.info/funktsionalnyie-klavishi-i-fn.html

Также обратите внимание , не устанавливали ли вы накануне каких-то программ, например, Яндекс-скриншоты (идет в комплекте к Яндекс-диску), OneDrive, Dropbox, Snipping tool и пр. Дело в том, что они могут "перехватывать" создание скриншота для того, чтобы автоматически его сохранить на облачный диск. Если подобный софт есть — откройте его настройки и отключите перехват клавиши Print Screen.

2) Можно установить спец. утилиту для создания скринов

Я думаю, что со мной многие согласятся, что нажимать кнопку Print Screen, а затем открывать Paint (или другой редактор) — не всегда удобно и быстро. Гораздо удобнее установить специальное приложение, в котором можно по одному клику создавать и сохранять скрин экрана сразу на диск (или автоматически его загружать в сеть или добавлять в редактор).

Причем, во всех программах для создания скринов (в 99%) — можно изменить кнопку для их создания! Я бы порекомендовал следующий софт: GreenShot, FastStone Capture, Snagit, PicPick, Light Shot.

Light Shot горячие клавиши

3) Можно переназначить одну клавишу на другую

Если в предыдущем способе мы просто назначили "горячую" клавишу для одной программы, то в этом я предлагаю более радикальный — изменить глобально для всех программ и системы Print Screen, скажем, на Shift или Home. Здесь смотрите сами, какая клавиша вам больше бы подошла взамен неработающей.

Читайте также  Пройти тест скорости печати на клавиатуре

Смена происходит достаточно быстро, достаточно запустить одну из утилит: Key Remapper, KeyTweak, MapKeyboard.

MapKeyboard: всего три действия для замены клавиши

4) Вызвать экранную клавиатуру

Не все знают, что в Windows есть специальный центр, с интересными инструментами: экранной лупой, экранной клавиатурой (на нее можно нажимать мышкой) и пр.

Располагается этот раздел по адресу: Панель управления -> Специальные возможности -> Центр специальных возможностей (чтобы открыть панель управления — нажмите Win+R , и введите команду control ) .

Панель управления — Специальные возможности — Центр специальных возможностей (Кликабельно)

Собственно, на экранной клавиатуре есть все кнопки, что и на обычной (физической). Можете кликать по нужной клавише и пользоваться ПК в обычном режиме.

Экранная клавиатура содержит все самые необходимые клавиши

5) Попробовать почистить клавиатуру, если нет эффекта — заменить на новую

В большинстве случаев клавиши перестают срабатывать и начинают плохо работать из-за пыли, крошек и прочего мусора, который скапливается под ними. Почистить клавиатуру можно несколькими способами:

  • просто перевернуть ее и постучать: все крошки и пыль вылетят из нее (если такое хотите сделать с ноутбуком — сначала отсоедините клавиатуру от устройства!);
  • есть специальные клавиатурные пылесосы — они могут быстро собрать все лишнее под клавишами (можно использовать и обычный пылесос, кстати);
  • в продаже есть специальные "лизуны" — чистильщики для клавиатур. Принцип работ у них простой: приклеиваете их к клавиатуре, они растекаются, а потом "отдираете" вместе с пылью и мусором.

Чистка пылесосом клавиатуры от крошек и пыли

Еще один "колхозный" дедовский способ чистки клавиатуры:

  • снять клавиатуру (отключить от ПК);
  • промыть ее в теплой воде с моющим средством (например, Fairy);
  • хорошо просушить ее;
  • собрать, подключить и попробовать в действии. Даже в самых печальных случаях (например, при залитии клавиатуры соком или кофе) — способ выручает! Правда, оговорюсь, все делаете на свой страх и риск, гарантий никаких не могу дать.

Если все вышеперечисленное не помогло — выход один, купить новую клавиатуру (дабы они не так уж и дорого стоят).

Кстати, можно существенно сэкономить, если заказать ее в китайском онлайн-магазине. Лучшие из таких магазинов (с самыми дешевыми ценами), я приводил здесь: https://ocomp.info/kitayskie-internet-magazinyi.html.

Конструктивной критике и дополнениям, как всегда, рад.

Скриншот — снимок экрана устройства — удобный инструмент для обмена и сохранения информации. Сделать скриншот на компьютере или ноутбуке можно разными способами, один из самых простых — кнопка PrintScreen, расположенная прямо на клавиатуре. Что делать, если не работает PrintScreen, наиболее частые причины проблемы и способы их решения — в статье.

Неисправность клавиши

В случае, если проблема связана непосредственно с кнопкой Prt Scr, исправить ее самостоятельно сложно. Наиболее распространенные причины:

  • Под клавишу попала вода. Если это так — необходимо изъять кнопку из клавиатуры и дать месту, где она установлена, высохнуть.
  • Очистить клавиатуру от мусора, который может скопиться под кнопками

В остальных случаях — необходимо обратиться в сервисный центр.

Проверка специальных клавиш

На некоторые клавиатурах, в основном старого образца, дополнительно установлена специальная клавиша, которая может блокировать функциональные клавиши, в том числе и Prt Scr. На такой клавише написано F Lock или F Mode. Если на клавиатуре пользователя присутствует такая кнопка, следует нажать ее и снова попробовать сделать скриншот.

Читайте также  Проблема подключения или недействительный код ммi

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

  • Использовать комбинацию Fn + Prt Scr

  • Использовать комбинацию Alt + Prt Scr

Сторонние приложения

Причиной некорректной работы скриншота может быть установка на устройство программ, которые влияют на работу клавиши и задействуют ее в своих внутренних функциях. Так, например, облачное хранилище может автоматически сохранять созданные скрины у себя.

Для решения проблемы нужно зайти в настройки установленного приложения и отключить в нем функцию Prt Scr.

Отсутствие кнопки Prt Scr

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

Для этого нужно:

  • Зайти в меню «Пуск»
  • Открыть вкладку «Все программы»

  • Открыть «Специальные возможности» и запустить Экранную клавиатуру

Среди клавиш на такой клавиатуре можно найти и нужную кнопку Prt Scr.

Обновление операционной системы и драйверов клавиатуры

Если после вышеуказанных способов все так же не работает скриншот , можно проверить обновления для операционной системы и в случае их наличия — обновить.

Для этого следует:

  • Открыть вкладку «Все программы» в меню «Пуск»

  • Зайти в Центр обновления Windows

  • Нажать «Обновить», если такая возможность присутствует

Проблема также может крыться в устаревших драйверах на клавиатуру.

Для их обновления нужно скачать их с сайта производителя устройства и установить.

Черный экран вместо скрина

Довольно распространенными являются случаи, когда не удается сделать скриншот во время игры — вместо скриншота получается черный экран. В таком случае можно попробовать:

  • Запустить игру в оконном режиме
  • Установить специальное приложение для скриншотов

Итоги

Проблемы с неправильной работой клавиши Prt Scr могут быть связаны с неисправностью самой кнопки, сторонними приложениями, устаревшими обновлениями или особенностями клавиатуры. Решение этих вопросов не представляет сложности для пользователя. Если скриншот все равно не работает, нужно загрузить одно из многих приложений для создания и редактирования скриншотов.

Я пытаюсь сделать снимок экрана моей игры с помощью кода и поделиться им с помощью намерения. Я могу делать это, однако скриншот всегда кажется черным. Вот код, связанный с совместным использованием снимка экрана:

Это в MainActivity:

И так я рисую все:

Хорошо, основываясь на некоторых ответах, я построил это:

Gameview содержит следующий метод:

Скриншот по-прежнему черный. Что-то не так с тем, как я могу его спасти?

Я попробовал несколько разных способов сделать снимок экрана, но ни один из них не работал: Наиболее показанный в приведенном выше коде был показан. Но, похоже, это не работает. Это проблема с использованием SurfaceView? И если да, то почему view.getDrawingCache (true) даже существует, если я не могу его использовать и как это исправить?

В этом есть много путаницы и несколько правильных ответов .

SurfaceView имеет две части: поверхность и вид. Поверхность находится на полностью отдельном уровне от всех элементов View UI. Подход getDrawingCache() работает только на уровне представления, поэтому он не захватывает ничего на поверхности.

Читайте также  Принимаю вызов детские фото

Буферная очередь имеет API-интерфейс производителя-потребителя и может иметь только один производитель. Холст – один из продюсеров, GLES – другой. Вы не можете рисовать с помощью Canvas и читать пиксели с помощью GLES. (Технически, если бы Canvas использовал GLES, и корректный контекст EGL был текущим, когда вы читали пиксели, но это не гарантировано. Canvas-рендеринг на Surface не ускоряется в любой выпущенной версии Android, поэтому прямо сейчас есть Нет надежды на то, что он работает.)

(Не относится к вашему делу, но я упомянул об этом для полноты 🙂 Поверхность не является буфером кадров, это очередь буферов. Когда вы отправляете буфер с GLES, он исчезает, и вы больше не можете читать его. Поэтому, если вы выполняли рендеринг с помощью GLES и записывали с помощью GLES, вам нужно было бы прочитать пиксели перед вызовом eglSwapBuffers() .

С рендерингом Canvas самый простой способ «захватить» содержимое Surface – просто нарисовать его дважды. Создайте растровое изображение размера экрана, создайте холст из растрового изображения и передайте его в свою функцию draw() .

С помощью рендеринга GLES вы можете использовать glReadPixels() до того, как буферный своп захватит пиксели. В Grafika есть (менее дорогой, чем код в вопросе) реализация кода захвата; См. saveFrame() в EglSurfaceBase .

Если вы отправляете видео напрямую на поверхность (через MediaPlayer), невозможно будет захватить фреймы, потому что ваше приложение никогда не имеет к ним доступа – они идут напрямую из медиазера в композитор (SurfaceFlinger). Однако вы можете направлять входящие кадры через SurfaceTexture и отображать их дважды из вашего приложения, один раз для отображения и один раз для захвата. См. Этот вопрос для получения дополнительной информации.

Один из вариантов – заменить SurfaceView на TextureView, который можно нарисовать, как и на любой другой поверхности. Затем вы можете использовать один из getBitmap() для захвата фрейма. TextureView менее эффективен, чем SurfaceView, поэтому это не рекомендуется для всех ситуаций, но это просто сделать.

Если бы вы надеялись получить композитный скриншот, содержащий как содержимое Surface, так и содержимое View UI, вам нужно будет захватить Canvas, как указано выше, захватить представление с помощью обычного трюка кэша чертежа, а затем собрать два вручную. Обратите внимание, что это не приведет к сбоям частей системы (строка состояния, навигационная панель).

Обновление: на Lollipop и позже (API 21+) вы можете использовать класс MediaProjection для захвата всего экрана с помощью виртуального дисплея. Есть несколько компромиссов с таким подходом, например, вы захватываете отображаемый экран, а не кадр, который был отправлен на поверхность, поэтому то, что вы получаете, возможно, было масштабировано вверх или вниз, чтобы соответствовать окну.

Если вы хотите узнать больше о том, как все это работает, обратитесь к документации по графической архитектуре уровня системы Android.

Это связано с тем, что SurfaceView использует поток OpenGL для рисования и рисования непосредственно в аппаратном буфере. Вы должны использовать glReadPixels (и, возможно, GLWrapper).

Ссылка на основную публикацию
Adblock
detector