Виджет цен на криптовалюты — Информеры — ForTrader.org

Виджет цен на криптовалюты - Информеры - ForTrader.org Гаджет

Rainmeter Cryptocurrency Tickers

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

‎виджет — курс биткойна

Не пропустите крипто-хайп! Отслеживайте цены избранных криптовалют на главном экране в российских рублях.

Capital.com рады представить Bitcoin Price Widget — новое приложение, призванное помочь трейдерам и инвесторам всегда быть в курсе изменений цен на ключевые мировые криптовалюты. Теперь узнать цены можно просто посмотрев на главный экран.
Виджет Capital.com — это мощный и динамичный инструмент, который предоставляет текущие котировки, выбранные пользователем из множества криптовалют, торгуемых по всему миру.

Виджеты полностью настраиваемые, что позволяет пользователю выбирать инструменты, шрифты и фон в соответствии со своими предпочтениями.
Хотите видеть на экране больше данных о рынках? Просто расширьте виджет и получайте более подробную информацию в режиме реального времени 24 часа в сутки, семь дней в неделю.

Загрузите виджеты Capital.com на свое устройство iOS сегодня и вы всегда будете в курсе последних событий на рынке.

Как использовать виджеты Capital.com на вашем устройстве iOS:
1) Скачайте приложение;
2) Откройте его и выберите понравившуюся криптовалюту, далее можно настроить шрифты, фон и размер;
3) Добавьте виджет, коснувшись и удерживая пустую область на экране, пока приложения не начнут покачиваться;
4) Нажмите кнопку “Добавить” ( ) в верхнем углу;
5) Прокрутите вниз, чтобы найти приложение, далее выберите размер виджета, затем нажмите «Добавить виджет»;
6) Будьте в курсе последних событий на рынке!

Гаджет:  Заметки на рабочий стол для Windows скачать бесплатно

Торговля на CFD отличается высоким уровнем риска, поскольку использование кредитного плеча может сказаться на вашем финансовом положении как положительно, так и отрицательно. 78.77% инвесторов теряют деньги, торгуя на CFD c этим брокером. Убедитесь, что вы понимаете, как работает торговля на CFD и связанные с этим риски.

Виджет цен электронной криптовалюты

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

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

Плагины криптовалют для wordpress

Конкретный плагин я вам не предложу, так как мне хватило виджета представленный выше, но вы можете подобрать модуль самостоятельно. Для это введите в поиск по плагинам слово Cryptocurrency или rate bitcoin и выбирайте подходящий:

Плагины криптовалют
Плагины криптовалют для сайта WordPress

Выбор большой, надеюсь вы найдёте что вам нужно. А я больше вас задерживать не буду. Удачи всем и до новых встреч.

Разработка виджета под android для отображения курса bitcoin

Привет, хаброчитатели! Предыстория: с недавних пор отслеживаю рост курса криптовалюты bitcoin(BTC). Раньше для просмотра котировок заглядывал на сайт какой-нибудь биржи, но гораздо удобнее иметь на рабочем экране смартфона небольшой виджет, который отобразит актуальную информацию.

На маркетах представлена куча разнообразных виджетов, показывающих курсы криптовалют. Но гораздо интереснее создать что-то свое. В этой статье я кратко опишу свой опыт создания виджета для гаджета под управлением ОС Android.

Для понимания материала статьи желательно начальное знакомство с Java и Android-разработкой в IDE Android Studio. Если нет — Вам сюда: Android developers.

Мой небольшой виджет будет отображать цену биткоина в долларах и время, на которое актуальна данная цена. Информация будет загружаться с русскоязычной биржи BTC-e, поскольку эта площадка отдает курс в удобном JSON-формате в ответ на get-запрос по url btc-e.nz/api/3/ticker/btc_usd.

Пример ответа биржи:

{"btc_usd":{"high":880,"low":836,"avg":858,"vol":3774491.17766,"vol_cur":4368.01172,"last":871.999,"buy":872,"sell":870.701,"updated":1482754417}}

Итак, для начала разработки создаем в IDE новый проект с помощью подходящего шаблона. Выбираем «Start a new Android Studio project», затем вводим имя и расположение проекта, выбираем целевое устройство и версию API, далее нужен пункт «Add no activity».

После того, как откроется IDE workspace, создадим пустой виджет с помощью встроенных шаблонов. Для этого нужно в дереве файлов проекта вызвать контекстное меню на папке app и выбрать пункт New → Widget → App Widget.

Будут созданы несколько файлов, из которых особенно интересны три.

Первый — xml-файл (res → xml → btcwidget_info.xml) с основными параметрами виджета:

<source lang="xml"><?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialKeyguardLayout="@layout/btcwidget"
    android:initialLayout="@layout/btcwidget"
    android:minHeight="40dp"
    android:minWidth="110dp"
    android:previewImage="@drawable/example_appwidget_preview"
    android:resizeMode="horizontal|vertical"
    android:updatePeriodMillis="180000"
    android:widgetCategory="home_screen"></appwidget-provider>

Параметр initialLayout задает имя xml-файла с визуальной разметкой виждета. minHeight и min-Width — минимальные размеры добавляемого виджета, updatePeriodMillis — время обновления информации в мс, но не чаще раза в полчаса (параметр 10 мс все равно воспринимается как минимальные 30 мин).

Второй xml-файл (res → layout → btcwidget.xml) содержит параметры визуального отображения виджета (разметка визуальных элементов).

В нем находится описание одного визуального элемента TextView внутри разметки RelativeLayout (Layouts):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#09C"
    android:padding="@dimen/widget_margin">
    <TextView
        android:id="@ id/appwidget_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_margin="8dp"
        android:background="#09C"
        android:contentDescription="@string/appwidget_text"
        android:text="@string/appwidget_text"
        android:textColor="#ffffff"
        android:textSize="20sp"
        android:textStyle="bold|italic"
        />
</RelativeLayout>

Самое интересное — третий файл с шаблоном исходного кода виджета на языке java. В таком виде шаблон не несет функциональной нагрузки, однако по комментариям кода можно понять, какой метод когда выполняется и за что отвечает:

Шаблон кода виджета
/**
 * Implementation of App Widget functionality.
 */
public class BTCWidget extends AppWidgetProvider {

      static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId) {

        CharSequence widgetText = context.getString(R.string.appwidget_text);
        // Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.btcwidget);
        views.setTextViewText(R.id.appwidget_text, widgetText);

        // Instruct the widget manager to update the widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There may be multiple widgets active, so update all of them
        for (int appWidgetId : appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }

    @Override
    public void onEnabled(Context context) {
        // Enter relevant functionality for when the first widget is created
    }

    @Override
    public void onDisabled(Context context) {
        // Enter relevant functionality for when the last widget is disabled
    }
}

Стоит сразу сказать, что ОС Android позволяет создавать большое количество экземпляров нашего виджета и их поведение будет целиком описываться приведенным выше кодом. Для более глубокого понимания поведения и жизненного цикла виджетов рекомендую ознакомиться со статьей

Android Widget

. Ниже в комментариях кода я объясню лишь некоторые моменты.

Столкнулся со следущей сложностью: система позволяет виджету обновляться (методом updateAppWidget) не чаще чем раз в 30 минут по соображениям экономии батареи. Но мне хотелось иметь возможность обновлять данные в нужный момент и я нашел способ обойти это ограничение. Для этого виджет был запрограммирован к принудительному обновлению по клику на него. Реализовал такое действие следующим образом: по нажатию на виджет в систему отправляется интент (Intent), который ловится самим же виджетом и обрабатывается запуском обновления данных. Если кто-то знает способ проще — буду рад советам в комментариях.

Исходный код виджета с добавленной функциональностью

/**
 * Implementation of App Widget functionality.
 */
public class BTCwidget extends AppWidgetProvider {

    private static final String SYNC_CLICKED    = "btcwidget_update_action";
    private static final String WAITING_MESSAGE = "Wait for BTC price";
    public static final int httpsDelayMs = 300;

    //этот метод выполняется, когда пора обновлять виджет
    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId)  {

        //Объект RemoteViews дает нам доступ к отображаемым в виджете элементам:
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.btcwidget);
        //в данном случае - к TextView
        views.setTextViewText(R.id.appwidget_text, WAITING_MESSAGE);
        appWidgetManager.updateAppWidget(appWidgetId, views);

        String output;
        //запускаем отдельный поток для получения данных с сайта биржи
        //в основном потоке делать запрос нельзя - выбросит исключение
        HTTPRequestThread thread = new HTTPRequestThread();
        thread.start();
        try {
            while (true) {
                Thread.sleep(300);
                if(!thread.isAlive()) {
                    output = thread.getInfoString();
                    break;
                }
            }

        } catch (Exception e) {
            output = e.toString();
        }
       //выводим в виджет результат
        views.setTextViewText(R.id.appwidget_text, output);

        // Instruct the widget manager to update the widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

        RemoteViews remoteViews;
        ComponentName watchWidget;

        remoteViews = new RemoteViews(context.getPackageName(), R.layout.btcwidget);
        watchWidget = new ComponentName(context, BTCwidget.class);

        //при клике на виджет в систему отсылается вот такой интент, описание метода ниже
        remoteViews.setOnClickPendingIntent(R.id.appwidget_text,   getPendingSelfIntent(context, SYNC_CLICKED));
        appWidgetManager.updateAppWidget(watchWidget, remoteViews);

        //обновление всех экземпляров виджета
         for (int appWidgetId : appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }

    }

   //этот метод ловит интенты, срабатывает когда интент создан нажатием на виджет и
  //запускает обновление виджета 
   @Override
    public void onReceive(Context context, Intent intent) {

        super.onReceive(context, intent);

        if (SYNC_CLICKED.equals(intent.getAction())) {

            AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);

            RemoteViews remoteViews;
            ComponentName watchWidget;

            remoteViews = new RemoteViews(context.getPackageName(), R.layout.btcwidget);
            watchWidget = new ComponentName(context, BTCwidget.class);

            remoteViews.setTextViewText(R.id.appwidget_text, WAITING_MESSAGE);

            //updating widget
            appWidgetManager.updateAppWidget(watchWidget, remoteViews);

            String output;
            HTTPRequestThread thread = new HTTPRequestThread();
            thread.start();
            try {
                while (true) {
                    Thread.sleep(httpsDelayMs);
                    if(!thread.isAlive()) {
                        output = thread.getInfoString();
                        break;
                    }
                }

            } catch (Exception e) {
                output = e.toString();
            }

            remoteViews.setTextViewText(R.id.appwidget_text, output);

            //widget manager to update the widget
            appWidgetManager.updateAppWidget(watchWidget, remoteViews);

        }
    }
   
    //создание интента
    protected PendingIntent getPendingSelfIntent(Context context, String action) {
        Intent intent = new Intent(context, getClass());
        intent.setAction(action);
        return PendingIntent.getBroadcast(context, 0, intent, 0);
    }
}

Содержимое класса HTTPRequestThread.java:

Парсер ответа с сервера — JSONParser.java:

Вот так выглядит описанный выше виджет:

Полный исходный код доступен здесь:

github.com/hakeydotom/BTCPriceWidget

Оцените статью
GadgetManiac
Добавить комментарий