Подтвердить что ты не робот

Захват экрана в android

Я хочу разработать приложение, которое сделает скриншот экрана Android. Кто-нибудь знает, как это сделать..? который похож на koushik duttas screen shot. Но без использования root..and у любого есть приложение kushhik dutta screenshot, которое работает..? не работает для меня. Пожалуйста, дайте мне знать.. спасибо заранее.

4b9b3361

Ответ 1

Скажем, что вы нажали кнопку:

findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
       Bitmap bitmap = takeScreenshot();
       saveBitmap(bitmap);
   }
});

После этого вам понадобятся эти два метода:

public Bitmap takeScreenshot() {
   View rootView = findViewById(android.R.id.content).getRootView();
   rootView.setDrawingCacheEnabled(true);
   return rootView.getDrawingCache();
}

 public void saveBitmap(Bitmap bitmap) {
    File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png");
    FileOutputStream fos;
    try {
        fos = new FileOutputStream(imagePath);
        bitmap.compress(CompressFormat.PNG, 100, fos);
        fos.flush();
        fos.close();
    } catch (FileNotFoundException e) {
        Log.e("GREC", e.getMessage(), e);
    } catch (IOException e) {
        Log.e("GREC", e.getMessage(), e);
    }
}

Ответ 2

Вы можете попробовать что-то вроде этого

private RelativeLayout view;

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    view = (RelativeLayout)findViewById(R.id.relativeView);

    View v1 = view.getRootView();

    v1.setDrawingCacheEnabled(true);
    Bitmap bm = v1.getDrawingCache();
}

Ответ 3

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

public Bitmap takeScreenshot() {
  View rootView = findViewById(android.R.id.content).getRootView();
  Bitmap bitmap = Bitmap.createBitmap(rootView.getWidth(), rootView.getHeight(), Bitmap.Config.ARGB_8888);
  Canvas canvas = new Canvas(bitmap);
  rootView.draw(canvas);
  return bitmap;
}

Ответ 4

Я думаю, что это невозможно без root или SDK, извините.

Я хотел бы быть доказанным.

Не приложение, но если у вас есть USB-кабель, вы можете установить Android SDK на ПК и сделать скриншоты с ПК с помощью androidscreencast, без необходимости корневать свой телефон.