Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Android [игнор отключен] [закрыт для гостей] / Работа с Android устройством из десктопного приложения. / 7 сообщений из 7, страница 1 из 1
09.07.2012, 08:06
    #37871095
ShadowDamballah
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Android устройством из десктопного приложения.
Здравствуйте всем,

Я хочу написать десктопную програмку для работы с 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
09.07.2012, 08:45
    #37871111
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Android устройством из десктопного приложения.
ShadowDamballah,

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

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

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

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

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

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

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


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