31.12.2014 / 15:00 | |
vl@volk Пользователь Сейчас: Offline
Имя: Владислав Откуда: Земля Регистрация: 26.12.2012
| aNNiMON, тсс, больше никому не говори такое. С тебя будут смеются
__________________
знает толк |
31.12.2014 / 15:09 | |
aNNiMON Супервизор Сейчас: Online
Имя: Витёк Регистрация: 11.01.2010
| vl@volk, ох, шутнички Хеллтарушки на вам нет. __________________
let live |
31.12.2014 / 15:45 | |
Fractal Пользователь Сейчас: Offline
Имя: J Регистрация: 20.07.2014
| Цитата aNNiMON: Fractal, не будет работать. Потому что во-первых у тебя не полноценный класс, а лишь API, всей реализации нет и не будет. А во-вторых, телефон должен поддерживать m3g на более низком уровне.Хоть есть сам апи? Если есть дай ссылку или кидай сюда. И еще с наступающим новым годом всем!
|
31.12.2014 / 16:21 | |
Fractal Пользователь Сейчас: Offline
Имя: J Регистрация: 20.07.2014
| aNNiMON, Спасибо! Наверно это новогодный подарок! |
31.12.2014 / 16:46 | |
Magatino Администратор Сейчас: Offline
Имя: Alexandr Откуда: Где Ленин родился. Simbirsk City Регистрация: 28.01.2011
| Цитата RblSb: Я могу записать tiledlayer в файл через write(byte[] b, int off, int len) ?Массив карты, а не TiledLayer |
31.12.2014 / 17:48 | |
Fractal Пользователь Сейчас: Offline
Имя: J Регистрация: 20.07.2014
| Цитата aNNiMON: Fractal, не будет работать. Потому что во-первых у тебя не полноценный класс, а лишь API, всей реализации нет и не будет. А во-вторых, телефон должен поддерживать m3g на более низком уровне.Да, ты был прав. Выдает ошибку: пакеты не могут быть в архиве мидлета. Жаль... Можно ли это исправить?
|
31.12.2014 / 22:59 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Что-то не получается прочитать ничего из потока. public static void main(String[] args) {
int port = 1234;
String host = "238.100.100.33";
try {
//InetAddress addr = InetAddress.getByName(host);
/*DatagramSocket inputSocket = new DatagramSocket();
inputSocket.connect(addr, port);
byte[] buf = new byte[1];
DatagramPacket packet = new DatagramPacket(buf, buf.length, addr, port);
inputSocket.receive(packet);
out.println("Connected? " + inputSocket.isConnected());
out.println("Data: " + new String(packet.getData()));
inputSocket.close();*/
DatagramChannel inCh = DatagramChannel.open();
SocketAddress addr = new InetSocketAddress(host, port);
inCh.connect(addr);
// inCh.configureBlocking(false);
out.println("Connected? " + inCh.isConnected() + " Blocking? " + inCh.isBlocking());
out.println("Open? " + inCh.isOpen() + " Registered? " + inCh.isRegistered());
ByteBuffer buf = ByteBuffer.allocate(10);
//inCh.read(buf);
inCh.receive(buf);
out.println("Data: ");
for (byte b : buf.array()) {
out.println(String.valueOf(b));
}
} catch (SocketException ex) {
ex.printStackTrace();
} catch (UnknownHostException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
Что закоментированный вариант, что второй зависает на чтении (receive, read) При этом эти адрес работает в плеере IPTV player. (В VLC на линуксе тоже не открывается, просто висит). Но сам player использует для проигрывания vlc (при установке пишет). Видимо нужно как-то настроить соединение. Если раскоментировать inCh.configureBlocking(false); то читается, но читаются одни нули. в выводе пишет connected true, open true, registered false, blocking в зависимости от configureBlocking (по умолчанию true) Изменено Naik (31.12 / 23:03) (всего 1 раз) |
1.01.2015 / 20:24 | |
RblSb Пользователь Сейчас: Offline
Регистрация: 25.07.2011
| Изменил RLE-алгоритм Naik'a, теперь он записывает только байты. Вообще, было бы неплохо сделать проверку на количество элементов и записывать байт активации сжатия перед его использованием, так точно можно избежать ситуации когда размер сжатого файла будет больше обычного, но мне это не грозит. Так что не сжимайте текст и подобное Открыть спойлер Закрыть спойлер import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* http://uk.wikipedia.org/wiki/RLE
* @author Naik
*/
public class RleOutputStream extends OutputStream {
private int current,count;
private final DataOutputStream out;
public RleOutputStream(OutputStream out) {
this.out=new DataOutputStream(out);
current=-2;
count=0;
}
public void write(int b) {}
public void writeByte(int b) throws IOException {
if (b==current) { //байт равен прошлому
count++;
} else { //иной байт
if (count!=0) {
//побайтовое ограничение
if (count>249) {
for (int i=0;i<count/250;i++) {
out.writeByte(250);
out.writeByte(current);
}
count=count%250;
}
out.writeByte(count);
out.writeByte(current);
}
current=b;
count=1;
}
}
public void flush() throws IOException {
if (count!=0) {
if (count>249) {
for (int i=0;i<count/250;i++) {
out.writeByte(250);
out.writeByte(current);
}
count=count%250;
}
out.writeByte(count);
out.writeByte(current);
}
out.flush();
//super.flush();
}
}
Открыть спойлер Закрыть спойлер import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* http://uk.wikipedia.org/wiki/RLE
* @author Naik
*/
public class RleInputStream extends InputStream {
private int count,current;
private final DataInputStream input;
public RleInputStream(InputStream input) {
this.input = new DataInputStream(input);
}
public int read() throws IOException {
if (count<1) {
count=input.read();
current=input.read();
}
count--;
return current;
}
}
Изменено RblSb (1.01 / 20:24) (всего 1 раз) |
1.01.2015 / 20:34 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| RblSb, но этот алгоритм и рассчитан для того, чтобы сжимать строки.
|