Espruino:Примеры/Разработка под Bangle.js: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
Строка 11: Строка 11:
== Если ваши смарт-часы не подключены к Bluetooth ==
== Если ваши смарт-часы не подключены к Bluetooth ==


* Нажмите на Bangle.js среднюю кнопку (BTN2).
* Нажмите на [[Bangle.js]] среднюю кнопку ('''BTN2''').
* При помощи нижней кнопки (BTN3) перейдите к пункту с настройками («Settings»).
* При помощи нижней кнопки ('''BTN3''') перейдите к пункту с настройками ('''«Settings»''').
* При помощи BTN2 выберите пункт с настройками.
* При помощи '''BTN2''' выберите пункт с настройками.
* Далее два варианта действий (одно или другое):
* Далее два варианта действий (одно или другое):
** Убедитесь, что в настройках «BLE» и «Programmable» стоит «On», чтобы включить у Bangle.js режим программирования. Затем выберите «Back», чтобы выйти из меню настроек.
** Убедитесь, что в настройках '''«BLE»''' и '''«Programmable»''' стоит '''«On»''', чтобы включить у [[Bangle.js]] режим программирования. Затем выберите '''«Back»''', чтобы выйти из меню настроек.
** Найдите пункт «Make Connectable», выберите его и пока отложите Bangle.js, оставив на нем меню Connectable.
** Найдите пункт '''«Make Connectable»''', выберите его и пока отложите [[Bangle.js]], оставив на нем меню '''Connectable'''.
* Откройте в Chrome [http://www.espruino.com/ide/ онлайн-IDE для Espruino].
* Откройте в [[Chrome]] [http://www.espruino.com/ide/ онлайн-IDE для Espruino].
* Кликните на желтую кнопку Connect в левом верхнем углу экрана.
* Кликните на желтую кнопку '''Connect''' в левом верхнем углу экрана.
* В открывшемся окне кликните на пункт Web Bluetooth (если его нет, почитайте [http://www.espruino.com/Quick+Start+BLE#banglejs это руководство]).
* В открывшемся окне кликните на пункт '''Web Bluetooth''' (если его нет, почитайте [http://www.espruino.com/Quick+Start+BLE#banglejs это руководство]).
* Найдите свои Bangle.js (по последним 4 цифрам) в списке устройств.
* Найдите свои [[Bangle.js]] (по последним 4 цифрам) в списке устройств.


Теперь соединение должно быть установлено. Если этого не случилось, взгляните на [http://www.espruino.com/Quick+Start+BLE#banglejs эту статью].
Теперь соединение должно быть установлено. Если этого не случилось, взгляните на [http://www.espruino.com/Quick+Start+BLE#banglejs эту статью].


Если вы хотите побыстрее начать, и у вас на руках только Android-телефон, то не беда! Если у вас нет внешней клавиатуры, вы можете установить бесплатное приложение Hackers Keyboard, где есть клавиши-стрелочки (они вам понадобятся).  
Если вы хотите побыстрее начать, и у вас на руках только [[Android-телефон]], то не беда! Если у вас нет внешней клавиатуры, вы можете установить бесплатное приложение Hackers Keyboard, где есть клавиши-стрелочки (они вам понадобятся).  


'''Примечание:''' Если вы раньше уже пользовались Espruino, то убедитесь, что пунктом назначения для загрузки кода выбран пункт «RAM» – для этого кликните на треугольник, находящийся под кнопкой загрузки кода (которая, в свою очередь, находится в середине экрана). Потому что если будет выбран пункт «Flash», вы рискуете удалить встроенное меню (но, впрочем, его можно будет добавить обратно с помощью [https://banglejs.com/apps/ загрузчика приложений]).
'''Примечание:''' Если вы раньше уже пользовались [[Espruino]], то убедитесь, что пунктом назначения для загрузки кода выбран пункт '''«RAM»''' – для этого кликните на треугольник, находящийся под кнопкой загрузки кода (которая, в свою очередь, находится в середине экрана). Потому что если будет выбран пункт '''«Flash»''', вы рискуете удалить встроенное меню (но, впрочем, его можно будет добавить обратно с помощью [https://banglejs.com/apps/ загрузчика приложений]).


Если у вас Kickstarter-версия Bangle.js, найдите в настройках пункт «Debug Info» и поставьте в нем «Hide» или установите самую последнюю версию загрузчика (Bootloader) при помощи [https://banglejs.com/apps/ загрузчика приложений].
Если у вас Kickstarter-версия Bangle.js, найдите в настройках пункт '''«Debug Info»''' и поставьте в нем '''«Hide»''' или установите самую последнюю версию загрузчика ('''Bootloader''') при помощи [https://banglejs.com/apps/ загрузчика приложений].


== Когда подключились ==
== Когда подключились ==


Онлайн-IDE для Espruino состоит из 2 частей: из черного REPL слева и белого редактора справа.
Онлайн-IDE для [[Espruino]] состоит из 2 частей: из черного [[REPL]] слева и белого редактора справа.


REPL слева имеет прямое соединение с часами и моментально выполняет все, что вы туда пишете, но будьте внимательны, потому что в нем используются фигурные скобки, чтобы определить, когда начинать выполнение кода.  
[[REPL]] слева имеет прямое соединение с часами и моментально выполняет все, что вы туда пишете, но будьте внимательны, потому что в нем используются фигурные скобки, чтобы определить, когда начинать выполнение кода.  


Поэтому вот этот код заставит Bangle.js завибрировать:
Поэтому вот этот код заставит [[Bangle.js]] завибрировать:


<syntaxhighlight lang="javascript" enclose="div">
if (true) {
if (true) {
   Bangle.buzz();
   Bangle.buzz();
}
}
А вот этот – если нажать Enter, а не Alt-Enter – запустит три команды, последние две из которых вызовут ошибку:
</syntaxhighlight>
 
А вот этот – если нажать {{клавиша|Enter}}, а не {{клавиша|Alt}}-{{клавиша|Enter}} – запустит три команды, последние две из которых вызовут ошибку:
 
<syntaxhighlight lang="javascript" enclose="div">
if (true)
if (true)
   Bangle.
   Bangle.
     buzz();
     buzz();
</syntaxhighlight>


Если вы пишете код в стиле «K&R», то вряд ли встретите какие-то проблемы, и если вы пишете код в правой части IDE, завершения строк будут выполняться автоматически.
Если вы пишете код в стиле '''«K&R»''', то вряд ли встретите какие-то проблемы, и если вы пишете код в правой части [[IDE]], завершения строк будут выполняться автоматически.


Если вы пишете код в правой части, то можете нажать на кнопку в середине IDE, чтобы выполнить сброс Bangle.js (временно!) и загрузить код, который находится в правой части. Но начальный код (который работает на большинстве устройств Espruino!) потерпит неудачу, потому что на Bangle.js нет светодиода.
Если вы пишете код в правой части, то можете нажать на кнопку в середине [[IDE]], чтобы выполнить сброс [[Bangle.js]] (временно!) и загрузить код, который находится в правой части. Но начальный код (который работает на большинстве устройств [[Espruino]]!) потерпит неудачу, потому что на [[Bangle.js]] нет светодиода.


Теперь давайте попробуем некоторые команды.
Теперь давайте попробуем некоторые команды.


'''Для начала давайте выполним сброс Bangle.js, чтобы выйти из меню «Connectable».'''
'''Для начала давайте выполним сброс [[Bangle.js]], чтобы выйти из меню «Connectable».'''


Напишите в левой части IDE следующее:
Напишите в левой части [[IDE]] следующее:


<syntaxhighlight lang="javascript" enclose="div">
reset();
reset();
</syntaxhighlight>


В результате должно появиться лого Bangle.js.
В результате должно появиться лого [[Bangle.js]].


А эта команда заставит Bangle.js завибрировать:
А эта команда заставит [[Bangle.js]] завибрировать:


<syntaxhighlight lang="javascript" enclose="div">
Bangle.buzz();
Bangle.buzz();
</syntaxhighlight>


А эта команда заставит часы издать писк:
А эта команда заставит часы издать писк:


<syntaxhighlight lang="javascript" enclose="div">
Bangle.beep();
Bangle.beep();
</syntaxhighlight>


'''Примечание:''' У большинства Bangle.js нет пьезодинамика – вместо него они издают звуки при помощи вибрационного мотора. Если вы, наконец, получили свои Bangle.js и они не издают никакого звука при использовании Bangle.beep(), просто обновите Bootloader и Settings при помощи загрузчика приложений. После этого вы можете поменять режим «Beep» в настройках на «Vibrate».
'''Примечание:''' У большинства [[Bangle.js]] нет пьезодинамика – вместо него они издают звуки при помощи вибрационного мотора. Если вы, наконец, получили свои [[Bangle.js]] и они не издают никакого звука при использовании Bangle.beep(), просто обновите Bootloader и Settings при помощи загрузчика приложений. После этого вы можете поменять режим «Beep» в настройках на «Vibrate».


Вы увидите, как эти команды возвращают промисы, а это значит, что вы можете сделать цепочку вызовов промисов:
Вы увидите, как эти команды возвращают промисы, а это значит, что вы можете сделать цепочку вызовов промисов:


<syntaxhighlight lang="javascript" enclose="div">
Bangle.buzz().then(() => {
Bangle.buzz().then(() => {
   Bangle.beep();
   Bangle.beep();
});
});
</syntaxhighlight>
Чтобы очистить дисплей [[Bangle.js]], можно воспользоваться функцией g.clear(). Полный список команд библиотеки Graphics можно найти [http://wikihandbk.com/wiki/Espruino:Справочник_по_API/Класс_Graphics тут].


Чтобы очистить дисплей Bangle.js, можно воспользоваться функцией g.clear(). Полный список команд библиотеки Graphics можно найти [http://wikihandbk.com/wiki/Espruino:Справочник_по_API/Класс_Graphics тут].
Чтобы написать сообщение на экране, воспользуйтесь E.showMessage():
Чтобы написать сообщение на экране, воспользуйтесь E.showMessage():


<syntaxhighlight lang="javascript" enclose="div">
E.showMessage("Hello","A Title")
E.showMessage("Hello","A Title")
</syntaxhighlight>


Специфические для Bangle.js функции и события находятся в классе Bangle, а функции, специфичные для Espruino – в классе E.
Специфические для [[Bangle.js]] функции и события находятся в классе Bangle, а функции, специфичные для [[Espruino]] – в классе E.


Но на самом дисплее также есть терминал VT100, так что если вы просто хотите написать какие-то данные, то можете воспользоваться Terminal.print() или Terminal.println():
Но на самом дисплее также есть терминал [[VT100]], так что если вы просто хотите написать какие-то данные, то можете воспользоваться Terminal.print() или Terminal.println():


<syntaxhighlight lang="javascript" enclose="div">
Terminal.println("Hello World")
Terminal.println("Hello World")
</syntaxhighlight>


Но это пролистнет экран вверх, из-за чего приложения, запущенные в данный момент, будут выглядеть немного странно!
Но это пролистнет экран вверх, из-за чего приложения, запущенные в данный момент, будут выглядеть немного странно!


Стоит отметить, что когда вы отключены от Bluetooth, Bangle.js будет печатать все сообщения от console.log() (включая все исключения) на дисплей – если в пункте «Debug Info» в настройках задано «Show». Это может пригодиться, например, если вы хотите узнать, возникают ли сбои у вашего приложения при ежедневном использовании.
Стоит отметить, что когда вы отключены от Bluetooth, Bangle.js будет печатать все сообщения от console.log() (включая все исключения) на дисплей – если в пункте '''«Debug Info»''' в настройках задано '''«Show»'''. Это может пригодиться, например, если вы хотите узнать, возникают ли сбои у вашего приложения при ежедневном использовании.


Хотите сделать какие-то реакции на нажимание кнопок Bangle.js? Можете запросить состояние кнопки. BTN1 – это верхняя кнопка, BTN2 – средняя, BTN3 – нижняя. Например, вот эта команда...
Хотите сделать какие-то реакции на нажимание кнопок [[Bangle.js]]? Можете запросить состояние кнопки. '''BTN1''' – это верхняя кнопка, '''BTN2''' – средняя, '''BTN3'''
– нижняя. Например, вот эта команда...


<syntaxhighlight lang="javascript" enclose="div">
BTN2.read();
BTN2.read();
</syntaxhighlight>


...вернет true или false в зависимости от того, в каком состоянии в данный момент находится средняя кнопка. Но, как правило, делать это не рекомендуется, потому что постоянный запуск этого кода расходует заряд батареи.
...вернет ''true'' или ''false'' в зависимости от того, в каком состоянии в данный момент находится средняя кнопка. Но, как правило, делать это не рекомендуется, потому что постоянный запуск этого кода расходует заряд батареи.


Вместо этого воспользуйтесь [http://wikihandbk.com/wiki/Espruino:Справочник_по_API/Глобальные_методы,_переменные_и_объекты/Функция_clearWatch() setWatch()] – эта функция позволяет следить за нажатием кнопки:
Вместо этого воспользуйтесь [[Espruino:Справочник_по_API/Глобальные_методы,_переменные_и_объекты/Функция_clearWatch()|setWatch()]] – эта функция позволяет следить за нажатием кнопки:


<syntaxhighlight lang="javascript" enclose="div">
setWatch(() => {
setWatch(() => {
   E.showMessage("Вы\nнажали\nсреднюю\nкнопку!");   
   E.showMessage("Вы\nнажали\nсреднюю\nкнопку!");   
   setTimeout(()=>g.clear(), 1000);
   setTimeout(()=>g.clear(), 1000);
}, BTN2);
}, BTN2);
</syntaxhighlight>


'''Это большой код, так что имеет смысл просто скопировать его в правую часть IDE, а затем воспользоваться кнопкой загрузки в середине.'''
'''Это большой код, так что имеет смысл просто скопировать его в правую часть [[IDE]], а затем воспользоваться кнопкой загрузки в середине.'''


По умолчанию проверка нажатия будет выполнена только один раз, но вы можете добавить в конце {repeat:true}, чтобы она повторялась:
По умолчанию проверка нажатия будет выполнена только один раз, но вы можете добавить в конце {repeat:true}, чтобы она повторялась:


<syntaxhighlight lang="javascript" enclose="div">
setWatch(() => {
setWatch(() => {
   Bangle.buzz();
   Bangle.buzz();
Строка 113: Строка 138:
   setTimeout(()=>g.clear(), 1000);
   setTimeout(()=>g.clear(), 1000);
}, BTN2, {repeat:true});
}, BTN2, {repeat:true});
</syntaxhighlight>


По умолчанию эта функция определяет только нажатие кнопки, но вы также можете воспользоваться настройками edge:"falling" и edge:"both", чтобы также определять, когда ее отпускают.
По умолчанию эта функция определяет только нажатие кнопки, но вы также можете воспользоваться настройками edge:"falling" и edge:"both", чтобы также определять, когда ее отпускают.
Строка 118: Строка 144:
== Использование правой части IDE ==
== Использование правой части IDE ==


Правая часть IDE – это просто реактор с подсветкой синтаксиса. Чтобы отправить на Bangle.js написанный код, просто кликните на кнопку загрузки:
Правая часть [[IDE]] – это просто реактор с подсветкой синтаксиса. Чтобы отправить на [[Bangle.js]] написанный код, просто кликните на кнопку загрузки:


[[File:Using the Right-hand side of the IDE_espruino_280220201830.png|center]]
[[File:Using the Right-hand side of the IDE_espruino_280220201830.png|center]]


Это выполнит предварительную обработку вашего кода, подгрузит нужные файлы, а потом загрузит код на Bangle.js. Вы также можете поменять пункт назначения кода (всего их три, смотрите описания внизу) – либо при помощи кнопки с треугольником, находящейся под кнопкой с загрузкой, либо при помощи пункта «Communications» в настройках.
Это выполнит предварительную обработку вашего кода, подгрузит нужные файлы, а потом загрузит код на [[Bangle.js]]. Вы также можете поменять пункт назначения кода (всего их три, смотрите описания внизу) – либо при помощи кнопки с треугольником, находящейся под кнопкой с загрузкой, либо при помощи пункта '''«Communications»''' в настройках.


* '''«RAM»''' – обычно используется именно этот вариант. При этом в долговременную память ничего не записывается (а значит – не перезаписывается), так что это быстрый и безопасный способ разработки под Bangle.js.
* '''«RAM»''' – обычно используется именно этот вариант. При этом в долговременную память ничего не записывается (а значит – не перезаписывается), так что это быстрый и безопасный способ разработки под [[Bangle.js]].
* «'''Flash» и «Flash (always)»''' – '''НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ВАРИАНТ НА BANGLE.JS''', т.к. это перезапишет вашим приложением встроенный загрузчик Bangle.js.
* «'''Flash» и «Flash (always)»''' – '''НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ВАРИАНТ НА BANGLE.JS''', т.к. это перезапишет вашим приложением встроенный загрузчик [[Bangle.js]].
* '''«Storage»''' – здесь можно выбрать файл в памяти Storage, куда будет выполнена запись. Хорошо подходит при разработке собственных приложений (более подробно читайте [https://www.espruino.com/Bangle.js+First+App тут]).
* '''«Storage»''' – здесь можно выбрать файл в памяти Storage, куда будет выполнена запись. Хорошо подходит при разработке собственных приложений (более подробно читайте [https://www.espruino.com/Bangle.js+First+App тут]).



Версия от 18:40, 28 февраля 2021

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Разработка под Bangle.js [1]

Если у вас нет часов Bangle.js

Вы можете воспользоваться онлайн-эмулятором Bangle.js, но – очевидно – у вас не будет доступа к датчикам, Bluetooth, динамику и вибрационному мотору.

Если ваши смарт-часы не подключены к Bluetooth

  • Нажмите на Bangle.js среднюю кнопку (BTN2).
  • При помощи нижней кнопки (BTN3) перейдите к пункту с настройками («Settings»).
  • При помощи BTN2 выберите пункт с настройками.
  • Далее два варианта действий (одно или другое):
    • Убедитесь, что в настройках «BLE» и «Programmable» стоит «On», чтобы включить у Bangle.js режим программирования. Затем выберите «Back», чтобы выйти из меню настроек.
    • Найдите пункт «Make Connectable», выберите его и пока отложите Bangle.js, оставив на нем меню Connectable.
  • Откройте в Chrome онлайн-IDE для Espruino.
  • Кликните на желтую кнопку Connect в левом верхнем углу экрана.
  • В открывшемся окне кликните на пункт Web Bluetooth (если его нет, почитайте это руководство).
  • Найдите свои Bangle.js (по последним 4 цифрам) в списке устройств.

Теперь соединение должно быть установлено. Если этого не случилось, взгляните на эту статью.

Если вы хотите побыстрее начать, и у вас на руках только Android-телефон, то не беда! Если у вас нет внешней клавиатуры, вы можете установить бесплатное приложение Hackers Keyboard, где есть клавиши-стрелочки (они вам понадобятся).

Примечание: Если вы раньше уже пользовались Espruino, то убедитесь, что пунктом назначения для загрузки кода выбран пункт «RAM» – для этого кликните на треугольник, находящийся под кнопкой загрузки кода (которая, в свою очередь, находится в середине экрана). Потому что если будет выбран пункт «Flash», вы рискуете удалить встроенное меню (но, впрочем, его можно будет добавить обратно с помощью загрузчика приложений).

Если у вас Kickstarter-версия Bangle.js, найдите в настройках пункт «Debug Info» и поставьте в нем «Hide» или установите самую последнюю версию загрузчика (Bootloader) при помощи загрузчика приложений.

Когда подключились

Онлайн-IDE для Espruino состоит из 2 частей: из черного REPL слева и белого редактора справа.

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

Поэтому вот этот код заставит Bangle.js завибрировать:

if (true) {
  Bangle.buzz();
}

А вот этот – если нажать  ↵ Enter , а не  Alt - ↵ Enter  – запустит три команды, последние две из которых вызовут ошибку:

if (true)
  Bangle.
    buzz();

Если вы пишете код в стиле «K&R», то вряд ли встретите какие-то проблемы, и если вы пишете код в правой части IDE, завершения строк будут выполняться автоматически.

Если вы пишете код в правой части, то можете нажать на кнопку в середине IDE, чтобы выполнить сброс Bangle.js (временно!) и загрузить код, который находится в правой части. Но начальный код (который работает на большинстве устройств Espruino!) потерпит неудачу, потому что на Bangle.js нет светодиода.

Теперь давайте попробуем некоторые команды.

Для начала давайте выполним сброс Bangle.js, чтобы выйти из меню «Connectable».

Напишите в левой части IDE следующее:

reset();

В результате должно появиться лого Bangle.js.

А эта команда заставит Bangle.js завибрировать:

Bangle.buzz();

А эта команда заставит часы издать писк:

Bangle.beep();

Примечание: У большинства Bangle.js нет пьезодинамика – вместо него они издают звуки при помощи вибрационного мотора. Если вы, наконец, получили свои Bangle.js и они не издают никакого звука при использовании Bangle.beep(), просто обновите Bootloader и Settings при помощи загрузчика приложений. После этого вы можете поменять режим «Beep» в настройках на «Vibrate».

Вы увидите, как эти команды возвращают промисы, а это значит, что вы можете сделать цепочку вызовов промисов:

Bangle.buzz().then(() => {
  Bangle.beep();
});

Чтобы очистить дисплей Bangle.js, можно воспользоваться функцией g.clear(). Полный список команд библиотеки Graphics можно найти тут.

Чтобы написать сообщение на экране, воспользуйтесь E.showMessage():

E.showMessage("Hello","A Title")

Специфические для Bangle.js функции и события находятся в классе Bangle, а функции, специфичные для Espruino – в классе E.

Но на самом дисплее также есть терминал VT100, так что если вы просто хотите написать какие-то данные, то можете воспользоваться Terminal.print() или Terminal.println():

Terminal.println("Hello World")

Но это пролистнет экран вверх, из-за чего приложения, запущенные в данный момент, будут выглядеть немного странно!

Стоит отметить, что когда вы отключены от Bluetooth, Bangle.js будет печатать все сообщения от console.log() (включая все исключения) на дисплей – если в пункте «Debug Info» в настройках задано «Show». Это может пригодиться, например, если вы хотите узнать, возникают ли сбои у вашего приложения при ежедневном использовании.

Хотите сделать какие-то реакции на нажимание кнопок Bangle.js? Можете запросить состояние кнопки. BTN1 – это верхняя кнопка, BTN2 – средняя, BTN3

– нижняя. Например, вот эта команда...
BTN2.read();

...вернет true или false в зависимости от того, в каком состоянии в данный момент находится средняя кнопка. Но, как правило, делать это не рекомендуется, потому что постоянный запуск этого кода расходует заряд батареи.

Вместо этого воспользуйтесь setWatch() – эта функция позволяет следить за нажатием кнопки:

setWatch(() => {
  E.showMessage("Вы\nнажали\nсреднюю\nкнопку!");  
  setTimeout(()=>g.clear(), 1000);
}, BTN2);

Это большой код, так что имеет смысл просто скопировать его в правую часть IDE, а затем воспользоваться кнопкой загрузки в середине.

По умолчанию проверка нажатия будет выполнена только один раз, но вы можете добавить в конце {repeat:true}, чтобы она повторялась:

setWatch(() => {
  Bangle.buzz();
  E.showMessage("Вы\nнажали\nсреднюю\nкнопку!");
  setTimeout(()=>g.clear(), 1000);
}, BTN2, {repeat:true});

По умолчанию эта функция определяет только нажатие кнопки, но вы также можете воспользоваться настройками edge:"falling" и edge:"both", чтобы также определять, когда ее отпускают.

Использование правой части IDE

Правая часть IDE – это просто реактор с подсветкой синтаксиса. Чтобы отправить на Bangle.js написанный код, просто кликните на кнопку загрузки:

Это выполнит предварительную обработку вашего кода, подгрузит нужные файлы, а потом загрузит код на Bangle.js. Вы также можете поменять пункт назначения кода (всего их три, смотрите описания внизу) – либо при помощи кнопки с треугольником, находящейся под кнопкой с загрузкой, либо при помощи пункта «Communications» в настройках.

  • «RAM» – обычно используется именно этот вариант. При этом в долговременную память ничего не записывается (а значит – не перезаписывается), так что это быстрый и безопасный способ разработки под Bangle.js.
  • «Flash» и «Flash (always)»НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ВАРИАНТ НА BANGLE.JS, т.к. это перезапишет вашим приложением встроенный загрузчик Bangle.js.
  • «Storage» – здесь можно выбрать файл в памяти Storage, куда будет выполнена запись. Хорошо подходит при разработке собственных приложений (более подробно читайте тут).

Что дальше

Возможно, вам также будут интересны вот эти статьи:

См.также

Внешние ссылки