Сегодня будут обновлены сервисы Google Play, предоставляющие разработчикам возможность взаимодействовать с сервисами Google. Обновление улучшает работу настроек геопозиции, добавляет новое API для работы с сервисами определения местоположения, работы с фитнес данными, автоматическое добавление рекламы AdMob и Google аналитики, а так же обновлённое взаимодействие с Google Games.
Диалог настройки местоположения
API данных о местах
Google Fit
- SENSORS_API — для получения текущих показателей датчика
- RECORDING_API — для записи полученных данных
- HISTORY_API — для чтения,удаления и редактирования собранных данных в Google Fit
- SESSIONS_API — для управления сессиями пользователя
- BLE_API — для взаимодействия с устройствами подключенными по протоколу Bluetooth Low Energy (фитнес трекеры, браслеты, умные часы)
- CONFIG_API — для доступа к пользовательским типам данных и настройке Google Fit
Google Mobile Ads
Google Play Games
App Indexing
Автор: Taras Neduiev
Улучшенный алгоритм поиска мобильного контента от Google
На сегодняшний день все больше пользователей отдают предпочтение мобильным устройствам отлучаясь от своих домашних десктопов, но когда при использовании любимого смартфона дело доходит до поиска информации, поисковая выдача все еще оставалась достаточно релевантной для запроса, но не достаточно адаптирована для мобильного устройства.
Не так давно компания Google представила инструменты для тестирования сайтов на предмет удобства использования на мобильных устройствах, где просто указав url вашего сайта можно узнать насколько он адаптирован и как его видит googlebot, а так же настроить его отображение в инструментах для веб-разработчика.
Сегодня же компания Google изменила алгоритм индексации сайтов оптимизированных для мобильного использования, а так же опубликованных приложений, который базируется на двух главных принципах :
- Начиная с 21-го апреля вступают в силу новые правила ранжирования сайтов в поисковой выдаче в зависимости от их адаптированности для мобильных устройств. Эти изменения коснутся всех языков по всему миру и значительно изменят позиции при поиске с мобильного устройства. Следовательно пользователи будут получать более релевантную и оптимизированную информацию для их конкретных устройств.
- Для тестирования сайта на пригодность использования при отображении на смартфонах можно воспользоваться вот этим тестом.
- Если вы являетесь администратором сайта, вы можете узнать все недочёты для мобильного юзабилити в инструментах для веб-мастеров Google.
- Начиная с сегодняшнего дня, данные из установленных мобильных приложений начинают использоваться как фактор ранжирования в поисковой выдаче, но скорей всего используются данные только из тех приложений, в которых пользователи залогинились под своим Google аккаунтом. Для того чтобы узнать, используется ли данные приложения для его индексирования, а так же сделать так, чтоб пользователи могли переходить к данным установленного у них приложения прямо из поисковой выдачи, необходимо ознакомится с руководством индексирования приложений в поисковой выдаче.
Автор: Taras Neduiev
Google представила новую программу "Android for Work"
Более миллиарда людей во всем мире используют смартфоны, которые стали для нас неотъемлемой частью жизни.
К сожалению для множества людей смартфоны еще не открыли весь свой потенциал для полноценного использования в работе. Потому сегодня Google анонсировал свою новую программу «Android for work» для раскрытия всего потенциала карманных гаджетов. Данный проект позволяет привлечь больше устройств в своем бизнесе и обеспечивает возможность управления бизнесом и увеличения его инновационного потенциала используя платформу Android.
Android for work включает в себя 4 базовых компонента:
- Рабочие профили — построены на базе принципа шифрования по умолчанию, более жестких мер безопасности SELinux, а так же поддержку нескольких пользователей при использовании Android 5.0 Lollipop. Теперь возможно создавать рабочий профиль и хранить рабочие данные на одном устройстве с личными данными и быть уверенным в их сохранности, а так же в сохранности личных данных, так как владелец/управляющий/работодатель не сможет просмотреть или очистить ваши данные.
- Приложение Android for work — для устройств работающих на базе Ice cream sandwich и KitKat или устройств которые не поддерживают работу с профилями. Это приложение предоставляет безопасную работу с почтой, календарём, контактами, документами, а так же приложениями которые были отмечены как рабочие.
- Google Play для работы — позволяет владельцам бизнеса безопасно управлять приложениями для всех пользователей использующих Android for work, а так же распределения (удалённую установку) приложений своим сотрудникам.
- Встроенные инструменты повышения производительности — набор приложений для повседневных бизнес задач включающий в себя приложения для почты, контактов, календаря и обеспечивает обмен заметками между рабочими устройствами, а так же совместное редактирование документов и таблиц.
Автор: Taras Neduiev
Damn Small Linux. Что это?
Появилась у меня старенькая машинка: Pentium 200MHz, RAM 48Mb, HDD 1,6Gb, S3 видеокарта. Очень удивило, что наклейка «не срывать» на задней крышке была не сорвана или срывали очень осторожно. Установлен Windows 98. Хоть железо вполне соответсвовало установленной ОС, работала не очень шустро. Возможно сказывается ее (ОС) 10-летний возраст. Дата установки март 2001 года. Что бы там ни было, винду я сразу снес и поставил DSL — Damn Small Linux. О ней и расскажу подробно в нескольких ближайших постах.
Что такое DSL?
DSL — Damn Small Linux, что в переводе на русский означает чертовски маленький линукс. Он действительно чертовски маленький, установочный диск всего 50 Мб. Дистрибутив основан на Дебиане. Загружается с LiveCD, после чего можно установить на жёсткий диск или юсб флешку. Минимальные системные требования: ЦП — 486DX, ОЗУ — 16 МБ. Официальный сайт http://damnsmalllinux.org. Последняя версия Damn Small Linux — 4.4.10 от 18 ноября 2008.
Не смотря на то, что дистрибутив занимает всего 50 Мб, в его составе есть что нужно для начала работы: браузер, клиент электронной почты, веб сервер, ftp клиент, ftp сервер, ssh сервер, игры, офисные приложения (электронные таблицы, текстовый процессор с проверкой правописания, текстовые редакторы, приложения для работы с графикой, просмотрщик PDF, аудиоплеер, файловый менеджер… Также у DSL есть скрипты для скачивания и установки менеджера пакетов Debian APT и Synaptic, графический интерфейс к APT.
Забегая вперед скажу, что работает в разы быстрее 98-й винды. И сразу пару скриншотов (кликабельны):

Скачать образ livecd можно по одной из ссылок на сайте производителя damnsmalllinux.org/download.html
Загрузка с LiveCD и установка на жесткий диск.
Автор: Roman Brovko
Damn Small Linux. Установка
Скачиваем образ диска ftp://ftp.is.co.za/linux/distributions/damnsmall/current/dsl-4.4.10.iso. Прожигаем все это на болванку, в биосе выставляем загрузку с диска, запускаемся.
Первое, что мы увидим будет вот такой экран загрузки:

Перевожу надписи: Установка на юсб-флешку, запуск в качестве гостевой ОС, MyDSL расширения, установка на жесткий диск. DSL основан на Кноппиксе, Дебиане и GNU Линукс технологиях. Нажмите <энтер> для начала, F2 и F3 для выбора параметров загрузки.
Если нажать F2 можно выбрать следующие параметры загрузки:
fb1280x1024 | fb1024x768 | fb800x600 разрешение монитора
dsl vga=normal безопасный режим видео (нажмите F3 для выбора больших опций)
dsl xsetup
dsl noicons без иконок (не будет иконок на кнопках, пунктах меню и ярлыков на рабочем столе)
dsl mydsl={hda1|sda1} восстановить приложения MyDSL (по умолчанию при загрезке с live-cd)
dsl base пропустить MyDSL, загрузить только базовую систему
dsl norestore отключить автоматическое восстановление
dsl restore={hda1|sda1|floppy} указать откуда восстановить сохраненную конфигурацию
dsl toram скопировать содержимое live-cd в оперативную память и начать загрузку (требуется от 128Мб). В этом режиме система будет работать очень быстро – скорость считывания данных с оперативной памяти намного выше, чем с live-cd или жесткого диска. Например, Мозила с live-cd запускается около 10 секунд, а с оперативки 2 секунды (правда я тестировал на хорошем компе, но и на старушке разница будет ощутимой).
dsl tohd=/dev/hda1 скопировать содержимое live-cd жесткий диск и начать загрузку
dsl fromhd=/dev/hda1 загрузка с ранее скопированного образа диска
dsl {ssh|lpd|cron|fuse|nfs|syslog|monkey|ftp} Запустить выбранные демоны при старте системы
dsl lang=us {cs da de es fr nl it pl ru sk …} Выбрать язык, раскладку клавиатуры
dsl no{scsi|pcmci|usb|agp|swap|apm|apic|mce|ddc} отключить определение указанного оборудования
dsl dma включить режим DMA для всех дисков
dsl 2 текстовый режим, т. е. без графической оболочки как сервер (да, да, из DSL можно сделать сервер
)
failsafe отключить определение оборудования
expert режим эксперта/интерактивный режим
Если нажать F3 можно выбрать следующие опции загрузки:
dsl vga=7xx выберите значение из таблицы выше.
Поясню этот пункт подробней. В параметре 7xx можно указать количество цветов и разрешение монитора. Вверху есть таблица, в которой нужно выбрать количество цветов (битность) в колонке справа и разрешение экрана в верхней строчке. На месте пересечения будет значение вроде 789. Например, если разрешение монитора 1024 на 768 и количество цветов 65000 (16 бит), выбираем значение 791. Параметр загрузки будет выглядить так dsl vga=791
dsl sata поддержка SATA дисков
dsl secure запрашивать пароль для пользователя root и dsl
dsl protect
dsl host=xxxx установить имя хоста
dsl minimal запустить иксы с минимальным оформлением
dsl desktop={fluxbox|jwm} выбор рабочей среды, по умолчанию выбран jwm
dsl waitusb ждать ответы от медленных юсб-устройств
dsl legacy не загружать unionfs. Что это такое можно почитать на Википедии http://ru.wikipedia.org/wiki/UnionFS
dsl dosswapfile{=hda1} найти или указать файл подкачки
dsl chekcfs
lowram запустить иксы, с минимальным оформлением, без иконок, без юсб, без scsi, без рейда и т. д.
install начать установку в текстовом режиме – сразу начнется установка, live-cd загружаться не будет.
Эти параметры можно использовать как при загрузке с live-cd, так и указать в grub или lilo (смотря что установите) после установки на жесткий диск. Как выбрать нужные параметры загрузки? Просто наберите их. Можно выбрать несколько параметров через пробел. При этом слово dsl нужно писать только один раз в начале. Внизу экрана есть приглашение для ввода:
boot: _
Вот тут и набирайте нужные параметры. Например, если хотим загрузиться без иконок с разрешением 800 на 600 16 бит с предварительной загрузкой содержимого диска в оперативную память и без иконок, надо будет написать следующее:
boot: dsl vga=788 toram noicons
Для установки DSL на жесткий диск запустимся без указания параметров. Жмем энтер, пробегут цветные буковки и появится рабочий стол:

Установка DSL на жесткий диск
Разделы на жестком диске нужно подготовить заранее. В live-cd есть утилита командной строки cfdisk для создания разделов на жестком диске. Для этого запускаем терминал: в контекстном меню (клик мышкой на рабочем столе) выбираем Apps – XShells – дальше что-нибудь одно из предложенных Transparent, Light и Dark (это скин терминала: прозрачный, светлый и темный) или Root Access (терминал с root-правами).
Запустили терминал, смотрим какие диски или разделы у нас есть:
sudo fdisk -l
Далее создаем системный раздел и своп (файл подкачки). У меня жесткий диск на 1,6 Гб. Сделал два раздела: корень в 1,5 Гб и своп 100 Мб. Для установки DSL требуется минимум около 200 Мб.
Создаем разделы:
sudo cfdisk /dev/hda
Вместо hda подставьте свое значение выданное в результатах предыдущей команды fdisk -l. Далее буду приводить свои значения, вы можете их менять на свои по усмотрению и необходимости.
Если диск чистый/новый вас спросят:
"No partition table or unknowk signature on partition table. Do you wish to start with a zero table [y/N]?"
На что отвечаем утвердительно – нажимаем Y. Появится такое окно, это редактор разделов:

Выбираем внизу пункт [New] – создать разделы, выбираем тип раздела [Primary] – основной раздел и указываем размер в мегабайтах – 1500. Раздел создан, теперь в списке две строки: только что созданный раздел и оставшееся пустое место. Стрелкой вниз выбираем пустое место и создаем раздел подкачки на всем оставшемся месте.
Далее выбираем файловую систему каждого раздела выбрав пункт [Type]. Пишем 83 для основного раздела и 82 для свопа. Основной раздел помечаем как загрузочный кнопкой [Bootable]. Если все сделали правильно, нажимаем [Write], подтверждаем свои действия набрав yes и тем самым запишем таблицу раздеделов. Закрываем терминал и начинаем установку.
Для установки Damn Small Linux на жесткий диск в контекстном меню выбираем пункт Apps – Tools – Install to HardDrive

Дальше отвечаем на несколько вопросов:
Enter the target partition. На какой раздел будет установлена система? Пишем название своего раздела, hda1, например.

Do you wish to multi-user logins? Хотите ли вы несколько пользователей в системе? Да/нет.
Use journalized ext3 filesystem? Использовать файловую систему ext3? (не рекомендуется на слабых машинах). Если нет, будет выбрана ext2.
Continue? Продолжить? Если продолжить будет создана файловая система и начнется установка.
Через некоторое время вас спросят будем ли ставить загрузчик? Отвечаем утвердительно. Снова спросят какой именно загрузчик мы хотим поставить Груб или Лило. Я выбрал Груб.
Загрузчик установлен. Перезагружаемся. Диск можно вытащить. После перезагрузки появится экран с выбором варианта загрузки. При необходимости правим параметры нажав «e». Все доступные параметры были описаны выше.
Далее вас попросят придумать пароль для root пользователя и повторить его еще раз. А затем те же действия для пользователя dsl (пользователь по умолчанию).
И наконец появится рабочий стол!
На этом установка закончена. В следующей статье про то как сохранить настройки при выключении или перезагрузке.
P.S.: некоторые значения в тексте и на скриншотах могут отличаться, т. к. скриншоты были сделаны позже на виртуальной машине.
Автор: Roman Brovko
Как использовать RecyclerView в Android
С выходом новой версии Android и привнесением в мир нового течения Material Design-а, появились и обновлённые, более современные версии старых вьюшек. Одно из таких обновлений затронуло и привычны вид отображения списка — ListView, на замену которого пришёл более быстрый и многофункциональный RecyclerView.
Главным отличием RecyclerView является создания всех элементов списка единожды, в отличии от ListView, где каждая View в списке создавалась отдельно для каждого из элементов списка, что в свою очередь приводило к огромному использованию памяти при создании достаточно больших списков.
Как начать работать с RecyclerView.
Для начала необходимо подключить библиотеку RecyclerView. Сделать это можно либо прописав зависимости в Gradle файл, либо же нажав кнопку F4 на нашем проекте и перейдя в вкладку «Dependencies». Так же подключим библиотеку CardView, так как элементы списка будем отображать в виде карточек и библиотеку Picasso, с помощью которой подгрузим изображения.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:cardview-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.3'
compile 'com.squareup.picasso:picasso:2.3.2'
}
Теперь создадим отображение нашего списка, поместив в layout активности наш RecyclerView.
activity_main.xml
public String getUniverse(){return universe;}
public String getImage() {return image;}
}
Создавать элементы списка нам будет наш кастомный адаптер, который будет создавать представление элементов для всего списка сразу, а не для для каждого по отдельности и работа с которым не отличается от работы с кастомными адаптерами при использовании ListView.
HeroAdapter.java
package com.awesomedevelop.recyclerview;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
/**
* Created by Taras on 30.01.2015.
*/
public class HeroAdapter extends RecyclerView.Adapter{
private ArrayListheroDataSet;
public Context mContext;
private int lastPosition = -1;
public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView textName;
TextView textUniverse;
ImageView imageHero;
public MyViewHolder(View itemView){
super (itemView);
this.imageHero = (ImageView)itemView.findViewById(R.id.image);
this.textName = (TextView)itemView.findViewById(R.id.hero_name);
this.textUniverse = (TextView)itemView.findViewById(R.id.hero_universe);
}
}
public HeroAdapter(Context context, ArrayListheroes){
this.heroDataSet= heroes;
mContext=context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.hero_card, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {
final TextView textViewName = holder.textName;
final TextView textViewUniverse = holder.textUniverse;
ImageView imageViewHero = holder.imageHero;
textViewName.setText(heroDataSet.get(listPosition).getName());
textViewUniverse.setText(heroDataSet.get(listPosition).getUniverse());
String src = heroDataSet.get(listPosition).getImage();
Picasso.with(mContext)
.load("file:///android_asset/images/"+src+".jpg")
.resize(300, 300)
.into(imageViewHero);
}
@Override
public int getItemCount() {
return heroDataSet.size();
}
}
В данном примере используются изображения, хранящиеся в папке асетов, но использовать можно (по необходимости) любое расположение. Например если используя библиотеку Picasso вы укажете путь к онлайновому расположению изображений, они будут подгружаться только для тех элементов списка, которые будут отображены на экране в данный момент, а не для всего списка сразу при его построении.
Теперь нам осталось только заполнить наш массив данных и передать его адаптеру. Выполняем это в активности, которая будет отображать список, в данном случае MainActivity.java
package com.awesomedevelop.recyclerview;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuItem;
import java.util.ArrayList;
public class MainActivity extends ActionBarActivity {
private static ArrayListheroes;
private static RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private static RecyclerView.Adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView)findViewById(R.id.my_recycler_view);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
fetchHeroes(); //Заполняем массив
adapter = new HeroAdapter(MainActivity.this,heroes); //Инициализируем наш адаптер
recyclerView.setAdapter(adapter); // Устанавливаем адаптер
}
//Заполняем массив
public void fetchHeroes(){
heroes = new ArrayList();
heroes.add(new HeroData("Зелёный Фонарь","DC comics","greenlantern"));
heroes.add(new HeroData("Джокер","DC comics","joker"));
heroes.add(new HeroData("Джона Хекс","DC comics","jonah-hex"));
heroes.add(new HeroData("Папа Миднайт","DC comics","glav"));
heroes.add(new HeroData("Ворона","DC comics","raven"));
heroes.add(new HeroData("Чёрная Вдова","Marvel","glavnaya"));
heroes.add(new HeroData("Капитан Америка","Marvel","cap_america"));
heroes.add(new HeroData("Космический Халк","Marvel","cosmic_hulk"));
heroes.add(new HeroData("Призрачный Гонщик","Marvel","ghost_rider"));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Использование RecyclerView значительно улучшает работу со списками, помимо оптимизации использования памяти его использование позволяет создавать более сложные элементы списка, которые могут быть абсолютно любыми, вплоть до создания полноценных экранов в виде элементов списка.
Проект на github.
Автор: Taras Neduiev




.jpg)
