powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Работа с Android устройством из десктопного приложения.
7 сообщений из 7, страница 1 из 1
Работа с Android устройством из десктопного приложения.
    #37871095
ShadowDamballah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте всем,

Я хочу написать десктопную програмку для работы с Android девайсом. Подскажите, пожалуйста, как организовать работу с состояниями устройства.

Пока не знаю, как правильно организовать ждущий цикл, который позволит мне подключать-отключать телефон несколько раз.

В коде я делаю следующее:


Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
import java.io.IOException;
import com.android.ddmlib.AdbCommandRejectedException;
import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.DdmPreferences;
import com.android.ddmlib.IDevice;
import com.android.ddmlib.MultiLineReceiver;
import com.android.ddmlib.ShellCommandUnresponsiveException;
import com.android.ddmlib.TimeoutException;
import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;

public class DeviceConnection {
	public static void main(String[] args) {
		DdmPreferences.setLogLevel("assert");
		DeviceStateListener devStateListener = new DeviceStateListener();
		AndroidDebugBridge.addDeviceChangeListener(devStateListener);

		AndroidDebugBridge.init(false);
		AndroidDebugBridge adb = AndroidDebugBridge.createBridge("adb", false);

		Runtime.getRuntime().addShutdownHook(new Thread() {
			@Override
			public void run() {
				if (AndroidDebugBridge.getBridge() != null) {
					AndroidDebugBridge.terminate();
					System.out.println("Adb bridge termination");
				} else {
					System.out.println("No adb bridge");
				}
			}
		});

		if (adb == null) {
			System.out.println("ADB is null");
			System.exit(1);
		}

		while (!devStateListener.isDeviceAvailable()) {
			System.out.println("Wating for device");
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

		if (adb.getDevices().length <= 0) {
			System.out.println("No device detected");
			System.exit(1);
		}

		IDevice device = adb.getDevices()[0];

		ShellCommandOutputReceiver stream = new ShellCommandOutputReceiver();

		try {
			device.executeShellCommand("ls", stream);
		} catch (TimeoutException e) {
			System.out.println("Connection to adb failed due to timeout\n" + e);
		} catch (AdbCommandRejectedException e) {
			System.out.println("Adb rejected command\n" + e);
		} catch (ShellCommandUnresponsiveException e) {
			System.out.println("Shell command unresponsive\n" + e);
		} catch (IOException e) {
			System.out.println("IO exception\n" + e);
		}

		System.exit(0);

	}
}

class DeviceStateListener implements IDeviceChangeListener {

	private boolean isDeviceAttached = false;

	public boolean isDeviceAvailable() {
		return isDeviceAttached;
	}

	@Override
	public void deviceConnected(IDevice device) {
		isDeviceAttached = true;
		System.out.println("Device is connected");
	}

	@Override
	public void deviceDisconnected(IDevice device) {
		isDeviceAttached = false;
		System.out.println("Device is disconnected");
	}

	@Override
	public void deviceChanged(IDevice device, int changeMask) {
		if ((changeMask & IDevice.CHANGE_BUILD_INFO) != 0) {
			System.out.println("CHANGE_BUILD_INFO");
		}
		if ((changeMask & IDevice.CHANGE_CLIENT_LIST) != 0) {
			System.out.println("CHANGE_CLIENT_LIST");
		}
		if ((changeMask & IDevice.CHANGE_STATE) != 0) {
			System.out.println("CHANGE_STATE");
		}
	}
}

class ShellCommandOutputReceiver extends MultiLineReceiver {

	@Override
	public boolean isCancelled() {
		return false;
	}

	@Override
	public void processNewLines(String[] lines) {
		for (String line : lines) {
			System.out.println(line);
		}

	}

}




Спасибо.
...
Рейтинг: 0 / 0
Работа с Android устройством из десктопного приложения.
    #37871111
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShadowDamballah,

Есть форум спец по мобильному андроид.
...
Рейтинг: 0 / 0
Работа с Android устройством из десктопного приложения.
    #37871535
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ShadowDamballah,

Есть форум спец по мобильному андроид.

где?
...
Рейтинг: 0 / 0
Работа с Android устройством из десктопного приложения.
    #37871647
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321,

Под рукой нету. На мобиле.ру вроде. Поиск тут форуме были ссылки.
...
Рейтинг: 0 / 0
Работа с Android устройством из десктопного приложения.
    #37871753
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Есть форум спец по мобильному андроид.
Разве есть еще какой-то андроид.. ;)
...
Рейтинг: 0 / 0
Работа с Android устройством из десктопного приложения.
    #37872491
ShadowDamballah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123
Есть форум спец по мобильному андроид.

Вы говорите как Yoda. Такой форум есть на JavaTalks

Хотя тему можно прекрыть (я кое-как решил задачу), тут дело не в андроиде как таковом, а программировании (даже проектировании). Просто у меня опыта мало.
...
Рейтинг: 0 / 0
Работа с Android устройством из десктопного приложения.
    #37872492
ShadowDamballah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NixicРазве есть еще какой-то андроид.. ;)

Есть стэндалон операционка.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Работа с Android устройством из десктопного приложения.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]