Сделайте скриншот камеры во время записи - Как в Galaxy S3?

Я разрабатываю приложение камеры, которое использует SurfaceView для отображения.

Я могу сделать снимок экрана SurfaceView (и сохранить его как растровое изображение)
с getDrawingCache () (на макете, который обертывает SurfaceView)
а также с canvas.drawBitmap (...)

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

У меня есть Galaxy S3, и я вижу, что у них есть эта функция в их камере, как именно они это делают?

Спасибо!

Ответы на вопрос(2)

Решение Вопроса

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

private long start;
private long end;
private long period;

Сначала получите время запуска сразу после запуска медиа-рекордера:

private void startRecording()
{
   mMediaRecoder.start();
   start = System.currentTimeMillis();
}

Затем, когда вы нажимаете на экран / кнопку для снятия скриншота, сохраните период:

private void captureImage()
{
   end = System.currentTimeMillis();
   period = end - start;
}

Наконец, когда вы останавливаете запись, получите растровое изображение, используя точку и медиа-ретривер:

private void saveVideo()
{
   MediaMetadataRetriever retriever = new MediaMetadataRetriever();
   //path -> the path to the video
   retriever.setDataSource(path);
   Bitmap bitmap = retriever.getFrameAtTime(period * 1000,MediaMetadataRetriever.OPTION_CLOSEST);
}

Надеюсь, это поможет вам!

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

 Techie Manoj29 окт. 2012 г., 14:10
SurfaceView работает на оверлее, а не на реальном изображении кэша.
 dor50629 окт. 2012 г., 14:07
Я имел в виду макет, который оборачивает SurfaceView. Я редактировал вопросы

Ваш ответ на вопрос