Архив рубрики: Публикации

Лучший плагин для всплывающих окон в WordPress

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

Читать

Обновление Google Play services 7.0

Сегодня будут обновлены сервисы Google Play, предоставляющие разработчикам возможность взаимодействовать с сервисами Google. Обновление улучшает работу настроек геопозиции, добавляет новое API для работы с сервисами определения местоположения, работы с  фитнес данными, автоматическое добавление рекламы AdMob и Google аналитики, а так же обновлённое взаимодействие с Google Games.

Диалог настройки местоположения

Так как нынешнее API определения местоположения использует все возможные в устройстве датчики, точность местоположения зависит от того, какие настройки активированы в данный момент (использование Wi-Fi, GPS, режим полёта и т.д.). В Google Play services 7.0 представлен стандартный механизм проверки необходимости задействовать тот или иной датчик устройства. Если есть необходимость задействовать дополнительный датчик, необходимый для выполнения конкретного запроса, появляется возможность предоставить пользователю диалоговое окно с настройками, не покидая самого приложения.

API данных о местах

Местоположение может исчисляться большим количеством параметров, чем по широте и долготе, потому новое API предоставляет возможность получать данные о местах из базы данных Google. С этим обновлением можно получать детали о местах, такие как : имя, адрес, телефон, сайт и многое другое. 
Если вы разрабатываете приложение с собственным интерфейсом (то-есть не используете GoogleMap в качестве части приложения), getCurrentPlace () вернёт вам данные о всех ближайших местах, занесённых в базу данных Google. Так же это API предоставляет возможность прогнозирования автозаполнения, для улучшения взаимодействия с пользовательским интерфейсом.
Так же появляется функционал добавления любимых мест пользователя и его текущего местоположения (addPlace() ). 
В данные момент данное API выпущено только для платформы Android, но уже ведётся бета-тестирование для iOS устройств, на которое можно подать заявку и использовать в своих приложениях.

Google Fit

В данной версии Google Play services прошлая версия Fitness.API была заменена на более новую Google Fit Android API с добавлением ряда интерфейсов : 
  • SENSORS_API — для получения текущих показателей датчика
  • RECORDING_API — для записи полученных данных 
  • HISTORY_API — для чтения,удаления и редактирования собранных данных в Google Fit
  • SESSIONS_API — для управления сессиями пользователя
  • BLE_API — для взаимодействия с устройствами подключенными по протоколу Bluetooth Low Energy (фитнес трекеры, браслеты, умные часы)
  • CONFIG_API — для доступа к пользовательским типам данных и настройке Google Fit
Данное обновление существенно снижает расход памяти приложениями, которые взаимодействуют с Google Fit сервисом. Как обычно предыдущая версия API все еще продолжает поддерживаться, но рекомендовано как можно быстрее переходить на использование новой версии.
Так же данное обновление существенно расширяет возможности по управлению с пользовательскими данными, например возможно добавление таких параметров как процентное соотношение жира и качество сна.

Google Mobile Ads 

В прошлом году сервис аналитики от Google был объединён и интегрирован в сервис AdMob. Новое обновление позволяет автоматически интегрировать аналитику в вашу кампанию мобильной рекламы и получать такие пользовательские данные как количество пользователей использующие приложение и их запущенные сессии, длительность сессии, версия операционной системы, модель устройства, а так же географические данные пользователя.

Еще одной приятной особенностью обновления является уменьшение энергопотребления при использовании как мобильной рекламной кампании, так и сбора данных для аналитики.

Google Play Games

В новые игровые сервисы включено Nearby Connections API, для определения запущенных неподалёку игр использующих Google Play Games, например для лёгкого и плавного подключения к ним, используя ваш смартфон или планшет в качестве второго экрана (контроллера) при игре на смарт TV.

App Indexing

Индексация приложений позволяет индексировать данные из вашего приложение, так же как индексируются обычные веб-сайты, что позволяет получать дополнительный приток пользователей непосредственно из поисковой выдачи Google. 
 

Автор: Taras Neduiev

Улучшенный алгоритм поиска мобильного контента от Google

На сегодняшний день все больше пользователей отдают предпочтение мобильным устройствам отлучаясь от своих домашних десктопов, но когда при использовании любимого смартфона дело доходит до поиска информации, поисковая выдача все еще оставалась достаточно релевантной для запроса, но не достаточно адаптирована для мобильного устройства.

Не так давно компания Google представила инструменты для тестирования сайтов на предмет удобства использования на мобильных устройствах, где просто указав url вашего сайта можно узнать насколько он адаптирован и как его видит googlebot, а так же настроить его отображение в инструментах для веб-разработчика.

Сегодня же компания Google изменила алгоритм индексации сайтов оптимизированных для мобильного использования, а так же опубликованных приложений, который базируется на двух главных принципах :

  1. Начиная с 21-го апреля вступают в силу новые правила ранжирования сайтов в поисковой выдаче в зависимости от их адаптированности для мобильных устройств. Эти изменения коснутся всех языков по всему миру и значительно изменят позиции при поиске с мобильного устройства. Следовательно пользователи будут получать более релевантную и оптимизированную информацию для их конкретных устройств. 
  • Для тестирования сайта на пригодность использования при отображении на смартфонах можно воспользоваться вот этим тестом.
  • Если вы являетесь администратором сайта, вы можете узнать все недочёты для мобильного юзабилити в инструментах для веб-мастеров Google.
  1. Начиная с сегодняшнего дня, данные из установленных мобильных приложений начинают использоваться как фактор ранжирования в поисковой выдаче, но скорей всего используются данные только из тех приложений, в которых пользователи залогинились под своим 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

Как использовать 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 ArrayList heroDataSet;
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, ArrayList heroes){
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 ArrayList heroes;
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

Как просматривать сайты в Google Chrome без подключения к Сети — Лайфхакер

Браузер Chrome при посещении любой страницы сохраняет её копию в кэше на жёстком диске. Из этой статьи вы узнаете простой способ отображения этой копии при работе в офлайне.

Bastian Weltjen/Shutterstock

Каждый раз, когда вам необходимо просмотреть какую-либо страницу в Сети, ваш браузер посылает запрос на соответствующий сервер, а затем загружает нужное содержимое. Если же подключение к Сети в данный момент отсутствует, то вы увидите сообщение о невозможности отображения этой страницы. Самое обидное, что это происходит даже тогда, когда вы пытаетесь просмотреть страницу, которую уже посещали и всё содержимое которой имеется в кэше на жёстком диске. Однако есть возможность научить браузер Google Chrome извлекать это содержимое и правильно отображать страницы даже без подключения к Сети.
Для активации этой опции вам понадобится открыть страницу с экспериментальными настройками браузера. Для этого введите в адресной строке chrome://flags/ и нажмите ввод. После этого найдите и включите опцию под названием «Показывать кнопку для загрузки локальной неактивной копии».  Перезапустите браузер.
Google Chrome flags
Теперь, когда вы захотите в офлайне просмотреть одну из ранее посещённых страниц, вы увидите стандартное уведомление о невозможности её загрузки, а рядом новую кнопку «Открыть сохранённую копию». При её нажатии будет загружена имеющаяся копия, сохранённая на жёстком диске при предыдущем посещении сайта.
Google Chrome offline
Как правило, локальная копия не слишком будет отличаться от оригинала, так как Google Chrome кэширует HTML, изображения, JavaScript и CSS. Однако, если страница имеет сложную структуру, встроенное видео или другое мультимедийное содержимое, то оно, разумеется, показано не будет.
Данная функция пригодится всем пользователям, которые имеют нестабильное подключение к Сети или вынуждены периодически работать в офлайне. Теперь вы сможете в любой момент загрузить страницу, которую уже открывали ранее, и дочитать статью независимо от наличия подключения к Сети.

Как просматривать сайты в Google Chrome без подключения к Сети — Лайфхакер

Автор: Роман Сталкер
Дата публикации: 2015-01-31T03:48:00.001-08:00