Задать вопрос
  • JSON не работает в PHP?

    Ответ написан
    Комментировать
  • Помощь с переводом?

    ipswitch
    @ipswitch
    IT-инженер
    Разрешение имён, основанное на информации, полученной от нижестоящего сервера
    Вот разве что так, если нужно «литературно»
    Ответ написан
    Комментировать
  • Готовые админки?

    @vedmaka
    ухты, getfwd.com ничего такая
    Ответ написан
    Комментировать
  • Yii. Вопрос по route в urlManager

    Igogo2012
    @Igogo2012
    '/users/<id:(\w+)>/' => '/users/profile/view',
    Ответ написан
    3 комментария
  • Кнопка MUTE для Android-приложения?

    vikS
    @vikS Автор вопроса
    Так, я разобрался, и готов продемонстрировать свое решение этой проблемы посетителям Хабра. Тем более, что советов по данному вопросу здесь получено не было ( все-таки суббота, нормальные люди отдыхают).

    Итак, обо всем по порядку:

    Что я хотел сделать?

    А хотел я сделать в своем приложении кнопку включения и выключения звука, которая при нажатии на нее отключает звук, а при повторном нажатии включает. Многие скажут, что такое лучше делать при помощи RadioButton, но я сделал это по-тупому по-своему при помощи двух элементов ImageView (в ходе изложения я буду называть их Button, т.к. ои по сути выполняют функцию кнопок), разумеется видимым в текущий момент времени на экране должен быть только один из этих View, в зависимости от того, какой уровень громкости установлен «ноль» или «больше ноля». При этом я хотел также учесть возможные манипуляции пользователя с качелькой громкости, чтобы не получилось такой ситуации: пользователь аппаратной кнопкой volume_up увеличил громкость, а на экране в данный момент доступна кнопка ее увеличения (хотя куда дальше увеличивать)… и наоборот.

    Кодим:

    Файл разметки содержит две кнопки: stop_sound (которую пользователь должен видеть, когда громкость не равна нулю, т.е. что-то играет) и кнопка play_sound (которую пользователь должен видеть, когда громкость равна нулю, т.е. ничего не играет)
          <ImageView
            android:id="@+id/stop_sound"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:background="@drawable/sound_on"
             />
    
        <ImageView
            android:id="@+id/play_sound"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:background="@drawable/sound_off"
             />
    


    Вот так эти View выглядят по отдельности (Рисовал их сам в AdobeFlash):
    Кнопка MUTE_btn:
    id=sound_stop
    image
    Кнопка UNMUTE_btn:
    id=sound_play
    image

    В коде нашей деятельности (Activity) пишем следующее:

        private ImageView MUTE_btn;    // Кнопка MUTE   (уменьшения громкости до нуля во всем приложении)
        private ImageView UNMUTE_btn;  // Кнопка UNMUTE (увеличения громкости почти до max во всем приложении)
    
        @Override
    	protected void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    	      
    	     // Кнопка при нажатии, на которую громкость в приложении станет НУЛЕВОЙ (MUTE_btn).
    	     // Сама кнопка станет невидимой, а ВИДИМОЙ станет кнопка ВКЛючения звука (UNMUTE_btn).   
    
    	        MUTE_btn = (ImageView)this.findViewById(R.id.stop_sound); 
    	      
    	        MUTE_btn.setOnClickListener(new OnClickListener(){
    	               public void onClick(View v) {
    	                    	  AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    	                    	  audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);
    	                    	  MUTE_btn.setVisibility(View.INVISIBLE);
    	                    	  UNMUTE_btn.setVisibility(View.VISIBLE);
    	               }
    	        });
    
    	     // Кнопка при нажатии, на которую громкость в приложеии станет почти MAX (UNMUTE_btn).
    	     // Сама кнопка станет невидимой, а ВИДИМОЙ станет кнопка ВЫКЛючения звука (MUTE_btn).    
    
    	        UNMUTE_btn = (ImageView)this.findViewById(R.id.play_sound);
    
    	        UNMUTE_btn.setOnClickListener(new OnClickListener(){
    	               public void onClick(View v) {
    	                    	  AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    	                    	  audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 90, 90);
    	                    	  MUTE_btn.setVisibility(View.VISIBLE);
    	                    	  UNMUTE_btn.setVisibility(View.INVISIBLE);
    	               }
    	        });  
    	        
            // Установка видимости соответствующих кнопок при запуске Activity
    	  int app_volume;  
    
    	         AudioManager audioManager2 = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    	         app_volume = audioManager2.getStreamVolume(AudioManager.STREAM_MUSIC); // вот тут у меня и была ошибка
    
    	    	  if(app_volume == 0){
    	    		 MUTE_btn.setVisibility(View.INVISIBLE);
    	    	         UNMUTE_btn.setVisibility(View.VISIBLE);
    	    	  }
    	    	  else{
    	    		MUTE_btn.setVisibility(View.VISIBLE);
    	     	        UNMUTE_btn.setVisibility(View.INVISIBLE); 
    	    	  } 
    	     	  
    	}    
    
          // А теперь займемся аппаратными кнопками volume_up и volume_down
    
           @Override
    	public boolean onKeyUp(int keyCode, KeyEvent event){
    
              // при нажатии на кнопку громкости вверх, смена видимости соответствующих кнопок 
    
    	    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){
    
    	    	     MUTE_btn.setVisibility(View.VISIBLE);
    	    	     UNMUTE_btn.setVisibility(View.INVISIBLE);
    	             return true;
    
                    }
    	    
    	  // при нажатии на кнопку громкости вниз, смена видимости соответствующих кнопок   
    
    	    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
    
               //  заметьте, тот же код, что и в методе on Create, т.к. необходимо, чтобы фон кнопки менялся только
               // при достижении нулевого уровня громкости
    
    	    	int app_volume;
    	             AudioManager audioManager2 = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    		     app_volume = audioManager2.getStreamVolume(AudioManager.STREAM_MUSIC);
    		    
    		    if(app_volume == 0){
    
    	    		   MUTE_btn.setVisibility(View.INVISIBLE);
    	    	           UNMUTE_btn.setVisibility(View.VISIBLE);
    
    	    	  }
    	    	  else{
    
    	    		 MUTE_btn.setVisibility(View.VISIBLE);
    	     	         UNMUTE_btn.setVisibility(View.INVISIBLE); 
    
    	    	  };  
    
    	          return true;
                    }    
    	}
    
    
    


    Итог:
    Вуаля, все работает как надо (Проверено на моем GalaxyNexus). Теперь, если пользователь захочет он может изменять громкость нажатием на разработанную нами «кнопку», изображение которой будет оповещать о наличии или отсутствии звука. А если вдруг, пользователь будет изменять громкость аппаратными клавишами, то и в этом случае изображение кнопки будет соответствовать ситуации.

    Надеюсь, описанное выше сможет кому-нибудь помочь в непростом деле разработки Android-приложений. Свои предложения и варианты реализации можете писать ниже. Мой же код точно не тянет на лучшую реализацию, т.к. я не имею большой опыт разработки.
    Ответ написан
    Комментировать
  • Университетский курс «Базы данных». О чем?

    У меня только 1 мысль, господи только не ОпенОфисБэйз.

    Нужны современные базы, теория построения баз, нормальные формы, вот это все. Хотел бы услышать по реальные применения баз, например когда сознательно идут на денормализацию. В кратце про ОРМ и не реляционные БД. Бест практисис проектирования схем БД.
    Ответ написан
    7 комментариев
  • Наушники для повседневки

    @zionkv
    Системный администратор Windows\Linux
    От себя могу добавить KOSS Porta PRO
    Для очков там как раз зазор, голова не устанет даже через 40 часов — особенность крепления и подушечек, за два года ничего ни где не потрескалось — металлический каркас. Качество звука — смотря с чего слушать. С моего Sony Live With Walkman — не очень, с IPod очень нравилось. Кричат громко, что в то же время является и минусом. В автобусе твою музыку приходится слушать всех, плохая звукоизоляция, действительно плохо подходят для общественного транспорта.
    Ответ написан
    6 комментариев
  • Обнаружение попадания в страйкболе?

    Eternalko
    @Eternalko
    * Включает бредогонератор *

    — Можно все пули измазать в краске, которая при контакте с костюмом будет оставлять характерный цвет.

    — Можно костюмы брать из «болоневой» ткани, что даст острый звук при попадании в ткань.

    — Можно написать приложение, которое будет улавливать звуки выстрела. Эхолокация рулит!!!

    — Можно рожок с патронами извалять в радиактивных отходах. Тогда при попадании, на теле, будет радиоактивная метка.

    — Можно сделать костюм из бумаги. Тогда пробивая бумагу будет след.

    — Можно участника замотать в костюм из проволки и дать какой-то заряд. Шары извалять в метал. краске. Отслеживать изменение заряда??

    — Вместе с выстрелом, пускать точечный радиосигнал лазером (боже что за бред несу) и если участник в костюме «стелс» то заряд не вернется.

    — может стоит оснастить костюм пластелином, чтобы все патроны прилипали и их было видно) Чисто лопуховые шарики (:

    — Может есть хим.реагенты, которые от легкого удара меняли бы цвет. Как бертолевая соль (:

    Ну а вообще рация, с обычными проводными гарнитурами рулит :)
    Ответ написан
    4 комментария
  • Будет ли интересна статья по PHP?

    @gro
    почему люди не могут ничего написать не спросив кого-то?
    Ответ написан
    Комментировать
  • Телефон на андроиде с максимально живучей батареей?

    foxmuldercp
    @foxmuldercp
    Системный администратор, программист, фотограф
    Если Вам не критичен андроид — моя Nokia Lumia 800. со включенной постоянно навигацией, wifi и передачей данных edge с выключением всего хозяйства кроме телефонии на ночь у меня меньше 48 часов не живет. С с 7 до 18 вечера со включенной передачей данных, wifi и навигацией разряжается около половины аккумулятора. Если использовать навигацию и интернеты только по дороге домой/на работу + плеер — последний раз прожила ровно 60 часов.
    Ответ написан
    Комментировать
  • Телефон на андроиде с максимально живучей батареей?

    Vagineer
    @Vagineer
    Nokia Lumia 900. Не андройдофон, конечно, но мало ли)

    Использование:
    1) 1-2 часа звонков в день
    2) Постоянная фоновая синхронизация с почтой (по 2G всегда)
    3) 15-20 минут интернета в день (3G включаю)

    Все это должна уметь. К томуж там батарейка 1800 — 2 дня полюбому должна держать, т.к. мой LG Quantum годовалый с батареей 1500 с куда более высоким потреблением при таком режиме больше суток может протянуть.
    Ответ написан
    Комментировать
  • Книги по HTML

    coocheenin
    @coocheenin
    The Passionate Web Developer & Coder, DIY Electron
    Человек спрашивает про вёрстку, а вы ему ссылки содержащие линки на книги про PHP, Rails, JavaScript и Flash :(
    Про веб-дизайн там есть губительные рекомендации читать Кирсанова и Лебедева, ни то, ни другое не нужно читать начинающему верстальщику, так как вёрстка != веб-дизайн.

    По вёрстке следует рекомендовать Зельдмана, Нильсена, Дубакова(!) и сайт pepelsbey.net (сайт коллеги Вадима Макеева ) — начать, например с Семантическая вёрстка. Часть 1. Также неплохо изучит всё, что было опубликовано на Вебмасконе (сейчас там паразитный iframe, но я отписал уже ребятам).

    Просто, если начать с Кирсанова и Лебедева, то мы потеряем может быть успешного и талантливого верстальщика в будущем…
    Ответ написан
    3 комментария
  • Будет ли интересна на Хабре статья о APRS (местонахождении станции)?

    strib
    @strib
    Да. Мне точно. Если не опубликуете здесь — то публикуйте где угодно, но ссылочку попрошу прислать )
    Ответ написан
    Комментировать
  • Как сделать в панели windows 7, кнопки запущенных приложение в два ряда

    girichev
    @girichev
    Не совсем помню как было в XP, но вроде как там второй ряд появлялся только после заполнения первого. Так же и в Win 7 сейчас.
    image
    Ответ написан
    Комментировать
  • Когда в PHP использовать интерфейсы, а когда абстрактные классы?

    try4tune
    @try4tune
    С точки зрения архитектуры:

    Интерфейс описывает свойства. Обратите внимание на классические названия интерфейсов: Throwable, Countable, Comparable, Iterable и т.д. Возьмем, к примеру, интерфейс Rollable (катящийся), и Foldable (складывающийся).

    Абстрактный класс же описывает сущность. Например, стол: Table_Abstract. Стол может быть деревянным, тогда будет Table_Wood extends Table_Abstract. Также стол может быть хирургическим: Table_Surgical extends Table_Abstract. В таком случае Table_Abstract объединяет общий свойства всех столов (скажем, площадь поверхности, наличие ножек и т.п.). А конкретный класс описывает сущность определенного типа столов.

    Связью же интерфейсов и классов Вы описываете свойства. Например, стол можно катить: Table_Abstract implements Rollable. Деревянный стол, например, можно сложить: Table_Wood implements Foldable.
    Ответ написан
    5 комментариев
  • MySQL. Откат последнего изменения

    ilyaplot
    @ilyaplot
    PHP программист
    Никак. Если только сам бэкапы не делал.
    Ответ написан
    1 комментарий
  • Какую специализацию в программировании выбрать?

    nadoelo
    @nadoelo
    Параллельные вычисления осваивай. На вес золота спецы.
    Ответ написан
    2 комментария
  • Получение дохода от бесплатной онлайн-игры?

    Sterhel
    @Sterhel
    Страничка «Связь» на сайте радует глаз))
    Ответ написан
    Комментировать