2015-06-09 2 views
0

Я пытаюсь сделать скриншот программным образом с помощью работы камеры и наложения на нее.Как сделать снимок экрана в Android с CameraView (SurfaceView)

Я уже пробовал следующее:

  1. захвата растрового изображения и рисование его на холсте

    Камера часть экрана отображается как черный

  2. с помощью Open GL

    Не удалось получить оверлейную часть экрана

Я также попытался объединить оба изображения, что тоже не получилось хорошо.

NB: Я уже прошел множество подобных вопросов, но не смог найти решение для них.

Я использую облачную реку-камеру Vuforia в своей деятельности.

Пожалуйста, помогите мне в этом, спасибо заранее.

+0

Вы хотите снять снимок активности? –

+0

В принципе, я хочу, чтобы пользователь получал изображение с содержимым текущего экрана при нажатии кнопки в приведенном выше объяснении. –

+0

https://stackoverflow.com/a/26303163/115145 – CommonsWare

ответ

0

mSnapshotLayout становится основной раскладке идентификатор которого снимок вы хотите, как этот

mSnapshotLayout = (LinearLayout) findViewById(R.id.snapshotLayout); 

Используйте этот внутри кнопки мыши

View v1 = mSnapshotLayout.getRootView(); 
v1.setDrawingCacheEnabled(true); 
Bitmap bm = v1.getDrawingCache(); 

storeImage(bm); 

А вот способ хранить этот образ

@SuppressLint("SimpleDateFormat") 
private boolean storeImage(Bitmap imageData) { 
    // get path to external storage (SD card) 
    String iconsStoragePath = Environment.getExternalStorageDirectory() 
      + "/Snapshot/"; 
    File sdIconStorageDir = new File(iconsStoragePath); 

    // create storage directories, if they don't exist 
    sdIconStorageDir.mkdirs(); 

    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); 
    String currentDateandTime = sdf.format(new Date()); 

    String filename = "Deal" + currentDateandTime + ".png"; 

    try { 

     File file = new File(sdIconStorageDir.toString() + File.separator 
       + filename); 

     FileOutputStream fileOutputStream = new FileOutputStream(file); 

     BufferedOutputStream bos = new BufferedOutputStream(
       fileOutputStream); 

     imageData.compress(CompressFormat.PNG, 100, bos); 

     bos.flush(); 
     bos.close(); 

     MediaScannerConnection.scanFile(this, 
       new String[] { file.getPath() }, 
       new String[] { "image/jpeg" }, null); 



    } catch (FileNotFoundException e) { 
     Log.w("TAG", "Error saving image file: " + e.getMessage()); 
     return false; 
    } catch (IOException e) { 
     Log.w("TAG", "Error saving image file: " + e.getMessage()); 
     return false; 
    } 
    return true; 
} 
+0

@Sreejith K, работает ли он –

+0

Спасибо, но он не работает с WebView. Сохраненное изображение является пустым. –

+0

На WbView ?? вам нужен WebView Image? –

Смежные вопросы