Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
wichujanin
1 / 1 / 0
Регистрация: 06.03.2014
Сообщений: 7
1

Скриншот окна

02.04.2014, 01:39. Просмотров 764. Ответов 4
Метки нет (Все метки)

Всем привет!
Цель, сделать скриншот экрана устройства.
В интернете нашел исходник:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.io.File;
import java.io.FileOutputStream;
import java.util.Arrays;
import java.util.Iterator;
 
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
 
................
 
    private void captureScreen(View rootLayout, String fileName) {
        // File root = Environment.getExternalStorageDirectory();
        File root = getExternalFilesDir(null);
        File file = new File(root, fileName);
        Bitmap b = Bitmap.createBitmap(rootLayout.getWidth(), rootLayout.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(b);
        rootLayout.draw(c);
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(file);
            if (fos != null) {
                b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
                fos.close();
                Toast.makeText(this, "Successful Capturing", Toast.LENGTH_SHORT).show();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
.......
 
            View rootLayout = findViewById(R.id.activity_main_contentLayout);
            captureScreen(rootLayout, "screenshot.jpg");
Не компилируется, показывает ошибку тут: findViewById(R.id.activity_main_contentLayout);
activity_main_contentLayout cannot be resolved or is not a field.

Помогите пожалуйста переделать эту функцию, чтобы работала и была вида:
private void captureScreen(String fileName)
Нужно чтобы делала скриншот всего экрана.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 01:39
Ответы с готовыми решениями:

Скриншот экрана
Здраствуйте, мне нужно зделать програмно скриншот екрана... я нашол...

Скриншот в фоновом режиме
Цель - создание приложения, работающего в фоне и делающего снимок всего экрана...

Скриншот google map
Дайте пожалуйста пример того, как сделать скриншот карты google (api v2) и...

Сделать скриншот экрана в Genymotion
Подскажите как можно сделать скриншот экрана с помощью эмулятора Genymotion?

Как сделать такую игру(скриншот+)?
В этой игре физика "вид сверху". Нужно двигать блоки(они упираются друг в...

4
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
02.04.2014, 08:27 2
Цитата Сообщение от wichujanin Посмотреть сообщение
Не компилируется, показывает ошибку тут:
activity_main_contentLayout - это идентификатор контейнера внутри которого размещены все компоненты графического интерфейса (кнопки, поля ввода, надписи итд). Откройте ваш layout файл который используется данной активити, и поправьте его добавив этот идентификатор.
0
wichujanin
1 / 1 / 0
Регистрация: 06.03.2014
Сообщений: 7
02.04.2014, 18:59  [ТС] 3
Можно ли написать функцию, чтобы не зависела от манифеста? пробовал так:
captureScreen(getWindow().getDecorView().getRootView(), "screenshot.jpg");
не получается Помогите плиз.

Добавлено через 14 минут
Пробую так:
Код
	private void PrtSc(){
		
		int i = 0;
		
		Bitmap bitmap;
		View v1 = getWindow().getDecorView().getRootView();  
		v1.setDrawingCacheEnabled(true);
		
		bitmap = Bitmap.createBitmap(v1.getDrawingCache());
		v1.setDrawingCacheEnabled(false);
		    
		if (Environment.MEDIA_MOUNTED.equals(Environment
				.getExternalStorageState())) {
			File sdCard = Environment.getExternalStorageDirectory();
			File directory = new File(sdCard.getAbsolutePath()
					+ "/ScreenShots");
			directory.mkdirs();

			String filename = "screenshot" + i + ".jpg";
			File yourFile = new File(directory, filename);

			while (yourFile.exists()) {
				i++;
				filename = "screenshot" + i + ".jpg";
				yourFile = new File(directory, filename);
			}

			if (!yourFile.exists()) {
				if (directory.canWrite()) {
					try {
						FileOutputStream out = new FileOutputStream(
								yourFile, true);
						bitmap.compress(Bitmap.CompressFormat.PNG, 90,
								out);
						out.flush();
						out.close();
						i++;
					} catch (IOException e) {
						e.printStackTrace();
					}

				}
			}

		}

	}
Скриншот не создается

Добавлено через 7 часов 29 минут
Неужели никто не знает?

Добавлено через 1 час 5 минут
Решил проблему, нужно добавить <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
02.04.2014, 21:36 4
Спасибо за процедуру (№2)... добавил в коллекцию... но... хватает все кроме лежащего на одном из лейаутов сурфейса и картинки на нем... Но все равно спасибо...
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
03.04.2014, 17:33 5
Цитата Сообщение от wichujanin Посмотреть сообщение
FileOutputStream out = new FileOutputStream( yourFile, true);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
Будьте внимательны. На слабых девайсах при большом разрешении файла Вы выхватите OutOfMemoryError
0
03.04.2014, 17:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2014, 17:33

как программно сделать скриншот экрана
как програмно сделать скриншот экрана?

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

Как сделать скриншот экрана без прав Root-а?
как сделать скриншот всего экрана без использования(getRootView()) без рут прав...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru