• Как в Android можно передавать аудио-поток с выхода звуковой карты по Wi-Fi?

    nekipelov
    @nekipelov
    Все просто: открываешь UDP сокеты, одна сторона пишет, другая читает. Отправляются небольшие пакеты (аудио данные продолжительностью по 40-80 мс). При приеме надо сделать джиттер-буфер, чтобы собирать и упорядочивать аудио пакеты.

    В общем, надо смотреть в сторону протокола RTP. Ну и аудио-кодек подобрать в зависимости от желаемого качества.
    Ответ написан
    2 комментария
  • Есть ли в английском языке аналог термина "костыль"?

    d43
    @d43
    workaround

    Обходной приём, или Workaround — обходное решение проблемы, выявленной в системе (в простонародии «костыль»)

    (Wikipedia)
    Ответ написан
    Комментировать
  • Какой выбрать способ монетизации приложения под android?

    ExileeD
    @ExileeD
    PHP/Python developer
    Ответ написан
    Комментировать
  • За короткий промежуток времени пропали несколько оценок в Google Play?

    proDOOMman
    @proDOOMman
    Да, время от времени это случается. Обычно оценки пропадают как раз перед обновлениями плей маркета.
    Ответ написан
    2 комментария
  • Android: ListView — разноцветные items?

    Allesad
    @Allesad
    PVOID задал справедливый вопрос — зачем хранить в адаптере вьюшки? Это совершенно не рациональное использование ресурсов. По сути, все что вам нужно знать — тип текущего элемента листа. По этому типу вы можете устанавливать фон нужного цвета.

    Пример:
    1) Создаем статичный класс (опционально статичный, можно куда-нибудь запихать в нагрузку) со всеми цветами — скажем, ListColors.

    public class ListColors {
        public static final Integer RED      = 0;
        public static final Integer GREEN    = 1;
        public static final Integer BLUE     = 2;
        public static final Integer YELLOW   = 3;
        public static final Integer PURPLE   = 4;
    }
    


    2) Создаем класс, описывающий элемент списка — ListItem. Тут важно свойство type, которое будет хранить тип элемента. А типом элемента будет любая из констант класса ListColors.

    class ListItem {
        private Long id;
        private Integer type;
    
        public ListItem(Long id, Integer type){
            this.id     = id;
            this.type   = type;
        }
    
        public Long getId(){
            return id;
        }
    
        public Integer getType(){
            return type;
        }
    }
    


    3) Далее пишем сам адаптер, в конструктор которого будет передаваться Context (никогда не помешает) и список элементов в формате List<ListItem>.

    class TestAdapter extends BaseAdapter implements ListAdapter {
    
        private Context context;
        private List<ListItem> items;
    
        public TestAdapter(Context context, List<ListItem> items){
            this.context    = context;
            this.items      = items;
        }
    
        @Override
        public int getCount() {
            return items.size();
        }
    
        @Override
        public ListItem getItem(int position) {
            return items.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return items.get(position).getId();
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ListItem item = getItem(position);
            convertView = LayoutInflater.from(context).inflate(R.layout.list_row_item, null);
    
            LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.view_background);
    
            Integer colorRes;
            switch (item.getType())
            {
                default:
                case ListColors.RED:
                    colorRes = context.getResources().getColor(R.id.red);
                    break;
                case ListColors.GREEN:
                    colorRes = context.getResources().getColor(R.id.green);
                    break;
                case ListColors.BLUE:
                    colorRes = context.getResources().getColor(R.id.blue);
                    break;
                case ListColors.YELLOW:
                    colorRes = context.getResources().getColor(R.id.yellow);
                    break;
                case ListColors.PURPLE:
                    colorRes = context.getResources().getColor(R.id.purple);
                    break;
            }
            layout.setBackgroundColor(colorRes);
            return convertView;
        }
    }
    


    В методе getView() мы получаем элемент списка, получаем базовый layot элемента списка (в данном случае типа LinearLayout), затем проверяем тип элемента и присваиваем layout'y нужный цвет. Можно еще хранить view элемента списка в holder'e, чтобы не создавать его каждый раз, но это частности.
    Ответ написан
    2 комментария
  • Как создать нового пользователя в Debian?

    dgeliko
    @dgeliko
    useradd -m -s /bin/bash -p PASSWORD USER_NAME
    Далее со своей машины ssh-copy-id user_name@host (копируем ключи для авторизации по ним, предварительно можно сделать с ssh-keygen)
    ну и далее открываем /etc/ssh/sshd_config и PermitRootLogin выставляем в no.
    После чего идем по ssh обычным юзером.
    Ответ написан
    2 комментария