Архив метки: Android

Работа с несколькими облачными хранилищами данных в андроид (cloud storages in android)

Вступление

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

Но главный минус — это лимитированное бесплатное пространство. Поэтому для загрузки в облако большого объёма данных приходится либо покупать дополнительное место, либо использовать одновременно несколько сервисов.

Эта статья посвящена второму подходу, а точнее его реализации на Android.

Дано

Еще с начала 2012 года у меня есть Dropbox-аккаунт. Сейчас там 28,75 бесплатных гигабайт (6 рефералов + покупка HTC One X). Моё основное и самое крупное облако. Используется для всего.

Есть и отечественный аккаунт от ЯндексДиск‘а с 6 бесплатными гигабайтами. Своеобразная файлопомойка. А точнее бекапы бекапов.

В наличии и GoogleDrive с 15 бесплатными гигабайтами. Это уже более серьёзное место. Храню исходный код программ, который может пригодиться в будущем.

А после покупки нового ноутбука и перехода на Windows 8.1 появился SkyDrive с 7 бесплатными гигабайтами. Складываю туда документы и фотографии. 

Таким образом, есть 4 поставщика с суммарным объемом в 56,75 гигабайт.

Решение

Каждый поставщик имеет своё фирменное приложение для Android. А каждое новое приложение — это лишний мусор в памяти смартфона, которой не так уж и много. К тому же постоянные синхронизации просто съедят весь трафик. Поэтому удобнее использовать одну программу.

Можно искать альтернативы долго. но решение уже давно лежит в must-have чемоданчике. Вот оно:

  • ES Проводник
Краткое описание: менеджер файлов с кучей интегрированных опций: от архиватора до работы по FTP. 
Цена:  бесплатно
Root: опционально (для правки системных файлов)
Ссылка:  https://play.google.com/store/apps/details?id=com.estrongs.android.pop

Установите его себе, если не сделали этого раньше. Запустите. Затем необходимо произвести свайп влево, чтобы переместиться в раздел «Облачное хранилище».

Далее нужно нажать на кнопку «Создать» в левом нижнем углу и в открывшемся диалоговом окне выбрать добавляемую службу.

Начнётся установка соединения. Она может затянуться до нескольких минут.

Потом отобразится форма авторизации. Введите свои данные и согласитесь на предоставление приложению «ES Проводник» доступа к учетной записи.

< a href="http://2.bp.blogspot.com/-SmfSO4piC9c/UsnrnlfTiKI/AAAAAAAAB7Y/9BoKTz3j5e4/s1600/cloud-android-06_vlsu.blogspot.com.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">

Добавленное облачное хранилище отобразится в списке.

Повторяем вышеописанные действия для остальных сервисов (если таковые имеются).

С облачными хранилищами можно производить почти все операции, которые доступны для внутренней памяти. Поддерживается даже копирование и перемещение между несколькими службами.

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

Вместо заключения

Присутствует возможность установить защиту, чтобы посторонние не получили доступ к вашим файлам. 
Для этого нужно зайти в настройки приложения «ES Проводник». Кнопка «Меню» > «Настройки» > «Настройка пароля». Установите флажок на строке «Включить защиту сети», а затем придумайте и подтвердите пароль.

Теперь для открытия любого облачного хранилища нужно будет ввести пароль.

Автор: Vladimir Surkov a.k.a. Vlsu

Прокачка Dropbox на 1 ГБ за 1 минуту

Эта заметка будет максимально короткой. Речь пойдёт об увеличении доступного пространства в Dropbox на 1 ГБ. 
dropbox.com

Требуется: смартфон на Android, аккаунт в Dropbox.
1) Устанавливаем приложение Mailbox
2) Запускаем его
3) Вводим логин и пароль от дропбокса
4) Ждём окончания авторизации и появления окна ввода данных почтового ящика
Всё, 1 ГБ зачислен.
5) По желанию удаляем приложение.

UPD: Ещё 3 ГБ можно получить за установку Carousel

Автор: Vladimir Surkov a.k.a. Vlsu

Обновление 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