|  31.12.2014 / 15:00 |  | 
| vl@volk    Пользователь 
  Сейчас: Offline 
 Имя: ВладиславОткуда: Земля
 Регистрация: 26.12.2012
 
 | aNNiMON,  тсс, больше никому не говори такое. С тебя будут смеются__________________
 
   знает толк | 
|  31.12.2014 / 15:09 |  | 
| aNNiMON   Супервизор 
  Сейчас: Offline 
 Имя: ВитёкРегистрация: 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, но этот алгоритм и рассчитан для того, чтобы сжимать строки.
 |