Работа с камерой в Android

1,00
р.
Для камеры есть коллбеки задания превью, получения картинки, но не понятно одно: у меня есть изображение в камере — делаю тач по какой-либо области — нужно получить область тача (цвет или хотя бы байты с данными). Каким образом?
UPD: Возникла проблема с получением картинки с канваса. Делаем так:
Canvas canvas = mHolder.lockCanvas(mHolder.getSurfaceFrame())
А что дальше - непонятно.
Про канву можно забыть. Массив с изображением мы получаем из коллбека превьюшки для камеры, но получаем всегда null и нагугливаем этот вопрос.
Использую метод так:
Camera.Size camSize = camera.getParameters().getPictureSize() int[] outBuff = new int[camSize.width * camSize.height] decodeYUV(outBuff, data, camSize.width, camSize.height) Log.d(TAG, "int[]=" + Arrays.toString(outBuff))
В лог ничего не выводится.
Итого: Нужно по тачу в превью камеры получить область изображения (в байтах). То есть, делаем тач — получаем кусок картинки на которой был сделан тач.

Ответ
Можно использовать YuvImage:
@Override public void onPreviewFrame(byte[] data, Camera camera) { Camera.Size previewSize = camera.getParameters().getPreviewSize() YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, previewSize.width, previewSize.height, null) ByteArrayOutputStream baos = new ByteArrayOutputStream() Rect rect = new Rect(0, 0, previewSize.width, previewSize.height) yuvImage.compressToJpeg(rect, 100, baos) byte[] bytes = baos.toByteArray() Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length)
// дальше можно получить область касания someImageView.setImageBitmap(Bitmap.createBitmap(bitmap, tapRegionX, tapRegionY, tapRegionWidth, tapRegionHeight)) }