Архив метки: Android

Запуск NettyJava на android эмуляторе

Сегодня 09.05.2012.
Сегодня произошла большая радость. Мне удалось откомпилировать и запустить мой тестовый консольный клиент, написанный на Netty, на android-эмуляторе!

Суть решения:
1. Создать в проекте папку «libs» и положить в неё netty.jar (ADT автоматически подгружает папку с таким именем)
2. Добавить программе разрешение на выход в интернет. В файле AndroidManifest.xml добавить запись

Просто рассказ:
Вчера я довёл до некоторого стабильного состояния классы Client и Server, основанные на NettyJava.
А сегодня утром написал короткое консольное приложение, которое может запускаться как сервер и клиент и цепляется к порту моего компьютера.
После отладки работы клиента и сервера под управлением JVM в Windows, я приступил к созданию тестового консольного приложения для Android.
Я думал, что меня встретят трудности, когда я попытаюсь использовать Client класс в android-приложении.

Так и произошло. Но на мою радость, я нашёл решение в google за один вечер.

Суть проблемы была в том, что хотя Eclipse и добавил JAR файл в текущий android-проект, но при запуске проекта на эмуляторе — библиотеку netty.jar не попадала на андроид.

Ответ оказался простым, во что я и верил, ADT плагин Eclipse не подгружал мой netty.jar.
Оказалось, что ADT подгружает внешние *.jar библиотеки только из папки «libs».
Я создал эту папку в своём проеке, поместил туда netty.jar и…
Мой клиент написанный на Netty заработал на Android эмуляторе!

Ниже пример клиент-серверной программы. (В данном состоянии пример не будет запускаться, т.к. здесь не хватает реализации классов Client и Server).

/**
* Пример клиент-серверной программы, написанной на NettyJava.

* Запуск сервера:

*
java -jar server.jar

* Запуск клиента: *

java -jar server.jar client

* На стороне клиента пишем сообщения и они отправляются на сервер в * пакете {@link Packet1Ping}. Сервер выводит пришедшие пакеты в стандартный поток * вывода. * * Клиент и сервер заточены для запуска с одного компьютера. * Сервер и клиент работают с localhost:8080 * @author Galiego710 * */ public class Main { public static final void out(String str) { System.out.println(str); } /** * @param args */ public static void main(String[] args) throws IOException { out("Program is started."); out("Print 'quit' or 'exit' to exit."); // запустить как клиент или сервер if ( (args.length > 0) && (args[0].equals("client"))) { ClientProgram(); } else { ServerProgram(); } out("Program is ended."); System.exit(0); } /** * Серверная часть * @throws IOException */ public static void ServerProgram() throws IOException { out("Mode: Server"); final Server server = new Server("MainServer", new InetSocketAddress("localhost",8080)); // Устанвить хук на завершение программы Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { // отключить сервер server.stop(); out("ShutdownHook done."); } }); // Установить слушателя серверу server.setListener(new ConnectorListener() { @Override public void connectionOpen(ConnectorHandler handler) { out("+++ SERVER: Client connected."); } @Override public void packetReceived(ConnectorHandler handler, Packet packet) { out("+++ SERVER: received " + packet); } }); // Запуск сервера if(!server.start()) { System.err.println("Server can't started!"); } else { System.out.println("Server is started"); } BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // Обрабатывать ввод с клавиатуры String str; do { System.out.print("Enter: "); str = br.readLine(); out("str=" + str); } while (!(str.equals("quit") || str.equals("exit"))); } /** * Клиентская часть * @throws IOException */ public static void ClientProgram() throws IOException { out("Mode: Client"); final Client client = new Client("user","pass", new InetSocketAddress("localhost",8080)); // Установить хук на закрытие программы Runtime.getRuntime().addShutdownHook(new Thread() { public void run() {
// потушить сервер client.stop(); out("ShutdownHook done."); } }); // Запустить клиента if(!client.start()) { System.err.println("Client can't started!"); } else { System.out.println("Client is started"); } BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // Обрабатывать ввода с клавиатуры String str; do { System.out.print("Enter: "); str = br.readLine(); out("str=" + str); // отправить пакет client.sendPacket(new Packet1Ping(str)); } while (!(str.equals("quit") || str.equals("exit"))); } }
Смотрите также: NettyJava — асинхронный событийно ориентированный сетевой фреймворк

Автор: galiego710

Android-троянец угрожает пользователям «Вконтакте»

По сообщениям информационного портала rudroid.com, российским пользователям мобильной платформы Android угрожает опасный Android-троянец, маскирующийся под мобильный клиент для социальной сети «В Контакте».

Запустившись на смартфоне, троянец может передавать злоумышленникам данные из телефонной книги пользователя, пересылать СМС, совершать телефонные звонки, а также выполнять иные команды, поступающие с удаленного сервера. Читать

GPNC Korea показала телевизоры будущего: Android и LED-подсветка

Возможно прогнозам об «одном сплошном телевидении», озвученным одним из героев бессмертного фильма «Москва слезам не верит»,  суждено сбыться. Производители уверены, что ОС Android даст новый виток развитию домашних телевизоров. Вплоть до того, что они потеснят домашние ПК. Читать

Windows-смартфоны теперь можно превратить в Android

Несмотря на обилие информационного шума вокруг новой ОС, смартфонов на Android в продаже не так много. На популярной торговой площадке Hotline, на момент написания этого материала их было всего  5 штук. Именно поэтому многие оценят обнаруженный зарубежными хакерами способ установить Android на любой Windows-смартфон. Читать