Форум программистов, компьютерный форум CyberForum.ru

Basic для платформы Android - Basic4Android - Basic4Android

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 213, средняя оценка - 4.95
Pro_grammer
Модератор
 Аватар для Pro_grammer
5787 / 1947 / 370
Регистрация: 24.04.2011
Сообщений: 3,324
Записей в блоге: 9
19.04.2014, 19:43     Basic для платформы Android - Basic4Android #1
Если кто не знает Basic4Android это простой и мощный инструмент разработки приложений для устройств, работающих под управлением операционной системы Android. Язык Basic4Android очень похож на популярный и всеми нами любимый язык Visual Basic. Лично мне показалось, что он больше похож на VB.NET, ООП полноценный.
Basic для платформы Android - Basic4Android
Что можно на нём написать? Да в принципе всё, что и на Java, только быстрее. Игры, GPS навигация, управление звонками, контактами, СМС, FTP, HTTP, виджеты.
Basic для платформы Android - Basic4Android
Огромное кол-во готовых библиотек сильно упрощают программирование, высокоразвитый IDE, отладчик реального времени, возможность отладки как на различных моделях эмуляторов различных устройств ( можно настроить любые параметры устройства) так и на реальном устройстве.
Basic для платформы Android - Basic4Android
Basic для платформы Android - Basic4Android
Если вы знаете Java, то это ещё плюс - можно самому писать любые библиотеки и подключать к своему проекту на Basic4Android.
Basic4Android выдает честный код, реальный .apk файл, без встроенных интерпретаторов, такой, что и на выходе скажем с Eclipse.
Из недостатков можно назвать его платность ($59 USD). Но если вы будете использовать его для написания платных программ, то думаю это смешная цена. А если не будете, то кого волнует, сколько он стоит? Всех волнует, где взять новую версию, а с этим проблем пока нет.
Проблема с общением и поиском единомышленников. Русских сообществ практически нет, форума, где можно задать вопрос на русском языке тоже нет.
Собственно потому я и пытаюсь создать что то подобное в теме. Сам я начал плотное знакомство с этим ЯП примерно неделю назад. Перевел кое что из документации, разобрал несколько примеров, написал свое собственное приложение. Пока всё нравится, и Basic4Android реально торт.
Но торт скучно есть в одиночку. Буду рад, если найдутся заинтересованные люди, готовые поддержать разговор.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2014, 19:43     Basic для платформы Android - Basic4Android
Посмотрите здесь:

Разработчик для платформы Android,Москва(от 60 до 100 т.р);
Разработчик для платформы Android, Санкт-Петербург(от 70 до 90 т.р);
Литература по Basic4Android для новичков Basic4Android
Ошибка "unknown android-api-level-9" при установке admob в eclipse Basic4Android
Есть ли возможность быстро и легко настроить B4A? Или сразу перейти на Android Studio? Basic4Android
Basic4Android Как подключить genymotion к basic4android?
Как отключить/изменить ресемплинг USB audio в Android 6 Basic4Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pro_grammer
Модератор
 Аватар для Pro_grammer
5787 / 1947 / 370
Регистрация: 24.04.2011
Сообщений: 3,324
Записей в блоге: 9
09.05.2014, 21:35  [ТС]     Basic для платформы Android - Basic4Android #41
Цитата Сообщение от Igor-13 Посмотреть сообщение
литература по basic4android на русском?
есть перевод 20 глав руководства.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Flamberg
32 / 32 / 3
Регистрация: 14.11.2012
Сообщений: 150
10.05.2014, 11:01     Basic для платформы Android - Basic4Android #42
а как сделать что-бы при установке на рабочий стол ярлык добавлялся?

Еще вопрос:
проблема с лебелами. Почему-то любой лебел, фон которого изменен программно теряет половину фона, после любого события (смена его текста, прокрутка скрола, и любая другая манипуляция). На картинке красным выделен лебел изначально черный, цвет програмно изменен на серо-голубой, после смены текста лебела, нижняя его половина стала черной. Причем повторное окрашивание в серо-голубой не помогает, нижняя часть все равно черная.
Basic для платформы Android - Basic4Android

Окраска происходит так:
PureBasic
1
2
3
Dim DrA, DrX As ColorDrawable
DrA.Initialize(Colors.RGB(40,80,80),0)
LabelA1.Background = DrA
В чем причина?
Pro_grammer
Модератор
 Аватар для Pro_grammer
5787 / 1947 / 370
Регистрация: 24.04.2011
Сообщений: 3,324
Записей в блоге: 9
10.05.2014, 15:02  [ТС]     Basic для платформы Android - Basic4Android #43
Цитата Сообщение от Flamberg Посмотреть сообщение
а как сделать что-бы при установке на рабочий стол ярлык добавлялся?
Как я понял, надо искать по ключевому слову INSTALL_SHORTCUT
Что удалось найти:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim shortcutIntent As Intent
shortcutIntent.Initialize("", "")
shortcutIntent.SetComponent(Common.ShortcutPackage & "/.shortcutexec")
shortcutIntent.PutExtra("from_shortcut", True)
shortcutIntent.PutExtra("sc_type", SCType)
shortcutIntent.PutExtra("sc_value", SCValue)
shortcutIntent.PutExtra("sc_destination", SCDestination)
shortcutIntent.PutExtra("sc_toast", SCToast)
shortcutIntent.PutExtra("sc_notification", SCNotification)
shortcutIntent.PutExtra("sc_extra1", "")
shortcutIntent.PutExtra("sc_extra2", "")
Dim in As Intent
in.Initialize("", "")
in.PutExtra("android.intent.extra.shortcut.INTENT", shortcutIntent)
in.PutExtra("android.intent.extra.shortcut.NAME", txtName.Text)
in.PutExtra("android.intent.extra.shortcut.ICON", LoadBitmap(File.DirAssets, imageFN))
Не пробовал, испытай, потом расскжи кк работает.

Добавлено через 14 минут
Цитата Сообщение от Flamberg Посмотреть сообщение
Окраска происходит так:
Я это делаю проще, без всяких прелюдий сразу
Visual Basic
1
Label1.Color = Colors.RGB(255,80,80)
И всё работает замечательно.
Flamberg
32 / 32 / 3
Регистрация: 14.11.2012
Сообщений: 150
10.05.2014, 15:25     Basic для платформы Android - Basic4Android #44
По поводу ярлыка: ваш код попробовал, ничего не произошло. Я так понял что нужно еще какие-то изменения в Manifest. Не думал, что это так сложно, попозже попробую разобраться.
Igor-13
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 8
10.05.2014, 16:26     Basic для платформы Android - Basic4Android #45
Цитата Сообщение от Pro_grammer Посмотреть сообщение
есть перевод 20 глав руководства
А это можно где-то посмотреть?
Runkin
 Аватар для Runkin
55 / 55 / 3
Регистрация: 22.12.2011
Сообщений: 252
Записей в блоге: 2
10.05.2014, 16:42     Basic для платформы Android - Basic4Android #46
Shortcut.zip
пример с ярлыком

Добавлено через 1 минуту
вы пробовали использовать TurnGPS Library
у меня не работает. должна включать GPS когда он выключен.
это вроде единственный вариант
Pro_grammer
Модератор
 Аватар для Pro_grammer
5787 / 1947 / 370
Регистрация: 24.04.2011
Сообщений: 3,324
Записей в блоге: 9
10.05.2014, 18:43  [ТС]     Basic для платформы Android - Basic4Android #47
Цитата Сообщение от Igor-13 Посмотреть сообщение
можно где-то посмотреть?
Я из разных html пытался собрать всё в одну справку, вот что вышло

Basic для платформы Android - Basic4Android

Переходы между страницами не заработали, но из домашней можно перейти на все по очереди.
Вложения
Тип файла: zip B4A tutorials.zip (2.19 Мб, 105 просмотров)
Flamberg
32 / 32 / 3
Регистрация: 14.11.2012
Сообщений: 150
11.05.2014, 08:39     Basic для платформы Android - Basic4Android #48
Разобрался с ColorDrawable. Как оказалось это не параметр, а объект-картинка. Он создается с параметрами Label которому присвоен, если он задан нескольким контролам, то создается с размерами меньшего и вставляется так во все. В результате больший Label он не закрывает полностью.
Поэтому Pro_grammer прав, лучше Color.RGB.

С GPS пока не разбирался
Runkin
 Аватар для Runkin
55 / 55 / 3
Регистрация: 22.12.2011
Сообщений: 252
Записей в блоге: 2
12.05.2014, 17:38     Basic для платформы Android - Basic4Android #49
как задать ApplicationLabel на разных языках ?
Например приложение яндекс диск:
на русском: Диск
на английском: Yandex.Disk
Igor-13
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 8
14.05.2014, 09:21     Basic для платформы Android - Basic4Android #50
Спасибо за информацию

Добавлено через 1 минуту
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Я из разных html пытался собрать всё в одну справку, вот что вышло

Вложение 397088

Переходы между страницами не заработали, но из домашней можно перейти на все по очереди.
Спасибо за информацию
BoDun
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 17
15.05.2014, 12:07     Basic для платформы Android - Basic4Android #51
Pro_grammer, а самих html не осталось?
Скачал посмотреть, а открывается дескать пустота.
То есть как будто ничего нет ни одной страницы даже, хотя размер говорит об обратном.
Runkin
 Аватар для Runkin
55 / 55 / 3
Регистрация: 22.12.2011
Сообщений: 252
Записей в блоге: 2
15.05.2014, 12:32     Basic для платформы Android - Basic4Android #52
Цитата:
Сообщение от Runkin Посмотреть сообщение
как задать ApplicationLabel на разных языках ?
Например приложение яндекс диск:
на русском: Диск
на английском: Yandex.Disk
c этой темой разобрался:
в ресурсах добавляем строку: например app_name
далее:
Visual Basic
1
#ApplicationLabel: @string/app_name
Pro_grammer
Модератор
 Аватар для Pro_grammer
5787 / 1947 / 370
Регистрация: 24.04.2011
Сообщений: 3,324
Записей в блоге: 9
15.05.2014, 16:08  [ТС]     Basic для платформы Android - Basic4Android #53
Цитата Сообщение от BoDun Посмотреть сообщение
а самих html не осталось?
Найди и скачай приложение htm2chm и декомпилируй этот chm. Получишь исходные Html.
Flamberg
32 / 32 / 3
Регистрация: 14.11.2012
Сообщений: 150
15.05.2014, 22:27     Basic для платформы Android - Basic4Android #54
еще пара интересных вопросов:
1. как сделать приложение неподвижным относительно ориентации экрана, всегда горизонтальное (планшетное).
2. как возводить в степень? Где-то видел, но когда понадобилось не нашел.
Pro_grammer
Модератор
 Аватар для Pro_grammer
5787 / 1947 / 370
Регистрация: 24.04.2011
Сообщений: 3,324
Записей в блоге: 9
15.05.2014, 22:40  [ТС]     Basic для платформы Android - Basic4Android #55
Цитата Сообщение от Flamberg Посмотреть сообщение
всегда горизонтальное (планшетное).
в Project Attributes
#SupportedOrientations: landscape

Цитата Сообщение от Flamberg Посмотреть сообщение
как возводить в степень?
power (2,2) это как в Бейсике 2^2
BoDun
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 17
20.05.2014, 12:57     Basic для платформы Android - Basic4Android #56
Pro_grammer, ещё полезные примеры будете выкладывать?
У вас хорошо получается объяснить, что к чему и куда.
Если у вас позволяет время и разобрались с виджетами, было бы интересно разобрать пример... на офф форуме нашёл тему, но туго с английским и не всё описано.
Да и тему поддержать, чтоб не угасала тут.
Pro_grammer
Модератор
 Аватар для Pro_grammer
5787 / 1947 / 370
Регистрация: 24.04.2011
Сообщений: 3,324
Записей в блоге: 9
20.05.2014, 16:20  [ТС]     Basic для платформы Android - Basic4Android #57
Цитата Сообщение от BoDun Посмотреть сообщение
с виджетами,
Тема интересная. Попробую найти время!
Pro_grammer
Модератор
 Аватар для Pro_grammer
5787 / 1947 / 370
Регистрация: 24.04.2011
Сообщений: 3,324
Записей в блоге: 9
22.05.2014, 20:21  [ТС]     Basic для платформы Android - Basic4Android #58
Android виджеты
Виджеты для андроид — это маленькие приложения, которые могут быть размещены на рабочем столе вашего Android-устрйства. Виджет работает в рамках "рабочего стола" нашего устройства и от этого имеет как плюсы так и минусы. Плюсы: можно настроить обновление средствами системы. Но минимальный интервал обновления при этом 30 мин., в целях экономии аккумулятора. Виджет всегда на виду: клиенту можно что-то сообщать не дожидаясь его действий.
Минусы: ограниченный набор компонентов, доступных для использования в интерфейсе.
Поддерживаются следующие виды:
- Button (default drawable)
- Label (ColorDrawable or GradientDrawable)
- Panel (ColorDrawable or GradientDrawable)
- ImageView
- ProgressBar (both modes)
Из этого следует, что на Panel или там Button вы не сможете фоном поставить изображение.
Ну, и, само собой, ограниченный размер "рабочей площади". В зависимости от устройства и его размеров будет зависеть и максимальный размер виджета. И он намного меньше полного экрана. Обычно виджеты размещаются в клетках, размер одной 80х100. Клеток может быть различное сочетание, такие как 2х3 или 3х4, горизонтальное расположение или вертикальное.
Написать виджет на Basic4Android так же просто, как и обычное приложение. Я придумал проект, в котором мы будем писать виджет, отображающий времена года. Для его осуществления нам понадобятся 4 изображения, соответствующие временам года, одно изображение на заставку в основной программе и иконка.
Название: ico.png
Просмотров: 304

Размер: 8.5 Кб
Основная программа делать ни чего не будет. При запуске покажет заставку с названием и картинкой потом сообщение вида MSGBOX, В котором мы предложим
Basic для платформы Android - Basic4Android
пользователю установить виджет на рабочий экран. После нажатия на OK основное приложение закроется. Во вкладке ВИДЖЕТЫ мы видим наш виджет, который устанавливаем стандартным способом
Basic для платформы Android - Basic4Android
В результате получим рабочий виджет на рабочем экране.
Basic для платформы Android - Basic4Android
Приступаем к написанию основной программы. Запускаем Basic4Android, видим стандартный код. Как обычно, сохраняем проект в отдельной папке, на это раз с именем seasons. Изменяем в меню Project->Pasckage Name на своё, помним, что это как минимум 2 слова, разделённые точкой, к примеру seasons.examples. Теперь в меню Project->Choose Icon выбираем свою иконку. С настройками закончили, приступаем к творчеству. Открываем дизайнер и добавляем все найденные изображения в кол-ве 5 штук. Способом, описанным в предыдущих уроках. На экран добавляем Panel, растягиваем на весь экран. В данный момент мы проектируем приложение, и тут нет ограничений, а по сему прямо на панель в качестве фона устанавливаем изображение заставки. В свойствах панели Drawable устанавливаем в BitmapDrawable и в качестве Image File выбираем этот, найденный на просторах Интернета рисунок, размером 320х480 ( весь экран)
Basic для платформы Android - Basic4Android
Изменяем имя Activity на наше seasons. Сохраняем панель с именем Layout1 и на этом проектирование основной программы считаем законченным. Приступаем к коду. Как я и сказал, делать наше приложение ни чего не будет, и код будет простой.
Изменяем имя приложения
#ApplicationLabel: Seasons

Код при активации
Visual Basic
1
2
3
4
5
6
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Layout1")
    Msgbox("Добавте на экран Seasons виджет.", "Seasons")
    Activity.Finish
End Sub
Basic для платформы Android - Basic4Android
С основным приложением закончили. Приступаем к программированию самого виджета. Добавляем из меню проекта Service module. Обращаю внимание, что это типовой модуль, в котором уже написан костяк кода. Даем ему имя, у меня SeasonsModule. Тут в модуле и будет весь остальной код виджета. Вызывам дизайнер и проектируем внешний вид нашего модуля. Если открылся проект приложения Layout1, то выберите File->New, это будет совсем другой файл!
Basic для платформы Android - Basic4Android
Добавляем панель, как основа. Её делаем прозрачной – Alpha = 0. На панель добавляем ImageView1 и Label1. ImageView1 будет содержать изображения времён года, а Label1 будет отображать текущую дату. Смотрите на рисунке настройки шрифта и цвета. Вы, естественно, можете всё сделать по своему. Сохраните этот файл с именем L1.
Можно приступать к программированию виджета. Обновления виджета строятся и посылаются с помощью RemoteViews, включающий контент, для отображения на домашней странице. Объявление в Process_Globals
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Dim now, dt, month As String
    Dim rv As RemoteViews
    Dim imageFiles() As String
    imageFiles = Array As String("leto.png", "osen.png", _
        "vesna.png", "zima.png")
    Dim currentImage As Int
End Sub
Переменные now, dt, month для работы с датой.
Массив imageFiles = Array As String для смены изображений, содержит имена файлов изображений.
Стандартная процедура для виджета, которая всё настраивает:

Visual Basic
1
2
3
Sub Service_Create
rv = ConfigureHomeWidget("L1", "rv", 60, "Seasons Widget")
End Sub
Первый параметр это слой виджета, который мы создали в дизайнере. Второй это событие rv RemoteViews, третий параметр это время обновления и четвертый это имя нашего виджета. Это имя будет отображатся в списке виджетов для установки.
Следующие типовые процедуры, имена которых говорят сами за себя
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Service_Start (StartingIntent As Intent)
If rv.HandleWidgetEvents(StartingIntent) Then Return
End Sub
Sub rv_RequestUpdate
    GetSeasons
    rv.UpdateWidget
End Sub
 
Sub rv_Disabled
    StopService("")
End Sub
Процедуры старта, обновления и завершения работы виджета.
Основная процедура определения времени года
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Sub GetSeasons
    DateTime.DateFormat = "dd:MM:yyyy"
    now = DateTime.now
    dt = DateTime.Date(now) 'день, месяц, год
    rv.SetText("Label1", dt)
    ' Выбор имени месяца и картинки
    Select Case DateTime.GetMonth(DateTime.now)
        Case 1
        month = "Января, зима в разгаре " 
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(3)))
        Case 2
        month = "Февраля, ещё зима "
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(3)))
        Case 3
        month = "Марта, уже весна"
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(2)))
        Case 4
        month = "Апреля, весна в разгаре"
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(2)))
        Case 5
        month = "Мая, пока ешё весна"
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(2)))
        Case 6
        month = "Июня, уже лето"
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(0)))
        Case 7
        month = "Июля, середина лета"
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(0)))
        Case 8
        month = "Августа, пока ещё лето"
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(0)))
        Case 9
        month = "Сентября, уже оснь"
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(1)))
        Case 10
        month = "Октября, осень в разгаре"
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(1)))
        Case 11
        month = "Ноября, всё ещё осень"
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(1)))
        Case 12
        month = "Декабря, уже зима"
        rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, imageFiles(3)))
    End Select
    
    rv.UpdateWidget
    
    
End Sub
В объяснениях не нуждается, обычный код.
Процедура, обрабатывающая взаимодействие с пользователем, а именно реагирует на клик по изображению. В результате выводит название месяца и день в сообщении:
Visual Basic
1
2
3
4
5
6
Sub ImageView1_Click
    
    ToastMessageShow("Сейчас " & DateTime.GetDayOfMonth(DateTime.now) & " " & month , True)
    GetSeasons
    rv.UpdateWidget
End Sub
Вот и весь код. Можно запускать на выполнение, и убедится в простоте программирования на Basic4Android.
Из граблей, которые явно обнаруживаются, можно отметить выбор размера виджета. Если виджет не умещается на экране в положенном ему месте, то его просто не видно в списке виджетов и соответственно не установить. Для этого делают несколько размеров виджетов, если они все максимальные по размеру для группы устройств, или один, но минимальный для самого маленького устройства ( как у нас).
Приятного программирования! Все материалы прилагаются ( из них можно почерпнуть изображения ) + готовый apk.
Вложения
Тип файла: zip seasons.zip (966.6 Кб, 72 просмотров)
fireday
 Аватар для fireday
303 / 133 / 5
Регистрация: 17.04.2013
Сообщений: 1,910
28.06.2014, 18:12     Basic для платформы Android - Basic4Android #59
Pro_grammer, спасибо большое за освещение b4a
Жаль в армию забирают, так бы сел за поедание такого торта
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2014, 21:00     Basic для платформы Android - Basic4Android
Еще ссылки по теме:

Basic4Android Как перезагрузить устройство android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Pro_grammer
Модератор
 Аватар для Pro_grammer
5787 / 1947 / 370
Регистрация: 24.04.2011
Сообщений: 3,324
Записей в блоге: 9
28.06.2014, 21:00  [ТС]     Basic для платформы Android - Basic4Android #60
Цитата Сообщение от fireday Посмотреть сообщение
Жаль в армию забирают
Это нормально. Жизнь не останавливается, просто набирает новых впечатлений, опять же знаний и здоровья на халяву. Да и год это вообще не срок, я к тому времени ещё пару - тройку уроков напишу. В частности про игрушки.
Yandex
Объявления
28.06.2014, 21:00     Basic для платформы Android - Basic4Android
Закрытая тема Создать тему
Опции темы

Текущее время: 04:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru