Часть 3. Связываем Arduino и телефон на Android через Bluetooth. Реализуем поиск Bluetooth устройств

  Переглядів 4,774

Astar Channel

Astar Channel

6 років тому

Продолжаем серию видео-уроков по созданию приложения в Android Studio для телефона под управлением ОС Android, при помощи которого мы будем управлять устройствами, подключеных к плате Arduino. Подключение будет проходить по технологии Bluetooth при помощи модуля HC-06 (ссылка на покупку модуля в описании ниже).
В этой части реализуем поиск bluetooth устройств.
Данная серия видеоуроков будет о том, как создать на мобильный телефон под управлением Android приложение для управления Arduino и подключенными к нему устройствами посредством bluetooth технологии. Основным элементом в данной серии видеуроков будет выступать bluetooth модуль HC-06
Bluetooth модуль HC-06 goo.gl/VHhNXi
Arduino UNO goo.gl/aiN1D8
Arduino NANO goo.gl/mWuTVZ
Исходники приложения из видеоурока (GitHub) goo.gl/c1rcMs
Скетч к проекту из видеоурока goo.gl/PSQ7jX
Android Studio скачать goo.gl/kJbNkt

КОМЕНТАРІ: 40
@PahaShrek
@PahaShrek 5 років тому
Спасибо за урок!
@AsTaR75256
@AsTaR75256 5 років тому
Есть более новые
@PahaShrek
@PahaShrek 5 років тому
@@AsTaR75256 в порядке очереди просматриваю. Я видел у вас много интересного на канале, как раз что меня интересует. Спасибо
@gavvrik2393
@gavvrik2393 4 роки тому
Видос нормальный но музыка напрягает.
@AsTaR75256
@AsTaR75256 4 роки тому
Если напрягает музон, гоу в плейлист обновленный)
@gavvrik2393
@gavvrik2393 4 роки тому
@@AsTaR75256 Отлично!
@sergn.4707
@sergn.4707 4 роки тому
Это ад какой-то. После этого хочется выкинуть bt модуль, и Ардуино. И телефон тоже. Спасибо, урок хороший, но ничерта пока не ясно. Будем разбираться.
@AsTaR75256
@AsTaR75256 4 роки тому
Поверь, это еще не самое запарное) мы сейчас работаем над одним проектом, который использует Bluetooth Low Energy, вот где пришлось реально попотеть :D А в чём у тебя сложности?
@450142079
@450142079 6 років тому
Огромное СПАСИБО! Но исходник не хочет открываться через андройд студио..
@AsTaR75256
@AsTaR75256 6 років тому
могу скинуть полностью готовый проект в архиве на google drive
@AsTaR75256
@AsTaR75256 6 років тому
скоро выложу следующую часть
@ZOrcLKSM
@ZOrcLKSM 4 роки тому
А можно скинуть ГОТОВЫЙ проект? Спасибо
@AsTaR75256
@AsTaR75256 4 роки тому
Я бы не советовал этот пример. Есть еще один плейлист, там найдёте пример. Или если что напишу новый и выложу на гитхаб
@studik41
@studik41 4 роки тому
Подскажи пожалуйста как с тобой связаться?
@studik41
@studik41 4 роки тому
Вопрос в том: можно ли привязать внешнюю gps, gnns антену к андроид через блютуз?
@AsTaR75256
@AsTaR75256 4 роки тому
@@studik41 это вам вряд-ли ко мне
@studik41
@studik41 4 роки тому
@@AsTaR75256 может знаешь кто сможет это сделать?
@AsTaR75256
@AsTaR75256 4 роки тому
К сожалению нет.
@AntonMalygin
@AntonMalygin 4 роки тому
Очень полезное видео...к сожалению при запуске поиска вылетает и закрывается приложение. Логи прикладываю. 09/03 15:00:06: Launching 'app' on samsung SM-A300F. $ adb shell am start -n "com.example.bluetoothtest/com.example.bluetoothtest.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER Connected to process 14621 on device 'samsung-sm_a300f-b66dd40f'. Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page. D/DisplayManager: DisplayManager() D/MainActivity: onCreate() W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable I/art: Rejecting re-init on previously-failed class java.lang.Class Rejecting re-init on previously-failed class java.lang.Class D/MainActivity: enableBluetooth() D/OpenGLRenderer: Render dirty regions requested: true I/Adreno-EGL: : EGL 1.4 QUALCOMM build: SKARAJGA_AU_LINUX_ANDROID_LA.BR.1.1.2_RB1.05.00.02.031.018+PATCH[ES]_msm8916_32_refs/tags/AU_LINUX_ANDROID_LA.BR.1.1.2_RB1.05.00.02.031.018__release_ENGG (I856e09677e) OpenGL ES Shader Compiler Version: E031.25.03.02 Build Date: 04/06/15 Mon Local Branch: Remote Branch: refs/tags/AU_LINUX_ANDROID_LA.BR.1.1.2_RB1.05.00.02.031.018 Local Patches: 112c106f3772623daa7b4181c6cf23491044ead1 Revert "Disable ASTC on A405" 58a118cb818fdc906095a49a90977c15f9d3b223 Remove ASTC I/OpenGLRenderer: Initialized EGL, version 1.4 D/OpenGLRenderer: Enabling debug mode 0 I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@2af1808f time:17378461 D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN W/art: Before Android 4.1, method int androidx.appcompat.widget.DropDownListView.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView W/art: Before Android 4.1, method int androidx.appcompat.widget.MenuPopupWindow$MenuDropDownListView.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView I/ListPopupWindow: Could not find method setEpicenterBounds(Rect) on PopupWindow. Oh well. D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN D/MainActivity: searchDevices: () enableBluetooth() D/MainActivity: searchDevices: Начинаем поиск устройств W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed. D/MainActivity: onReceive: ACTION_DISCOVERY_STARTED E/WindowManager: android.view.WindowLeaked: Activity com.example.bluetoothtest.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{3be1d44f V.E..... R.....ID 0,0-501,242} that was originally added here at android.view.ViewRootImpl.(ViewRootImpl.java:371) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:261) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) at android.app.Dialog.show(Dialog.java:298) at android.app.ProgressDialog.show(ProgressDialog.java:116) at android.app.ProgressDialog.show(ProgressDialog.java:99) at android.app.ProgressDialog.show(ProgressDialog.java:94) at com.example.bluetoothtest.MainActivity$2.onReceive(MainActivity.java:187) at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:861) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5536) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1397) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1192) E/ActivityThread: Activity com.example.bluetoothtest.MainActivity has leaked IntentReceiver com.example.bluetoothtest.MainActivity$2@2ad3e04d that was originally registered here. Are you missing a call to unregisterReceiver()? android.app.IntentReceiverLeaked: Activity com.example.bluetoothtest.MainActivity has leaked IntentReceiver com.example.bluetoothtest.MainActivity$2@2ad3e04d that was originally registered here. Are you missing a call to unregisterReceiver()? at android.app.LoadedApk$ReceiverDispatcher.(LoadedApk.java:898) at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:699) at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1815) at android.app.ContextImpl.registerReceiver(ContextImpl.java:1795) at android.app.ContextImpl.registerReceiver(ContextImpl.java:1789) at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:495) at com.example.bluetoothtest.MainActivity.searchDevices(MainActivity.java:112) at com.example.bluetoothtest.MainActivity.onOptionsItemSelected(MainActivity.java:83) at android.app.Activity.onMenuItemSelected(Activity.java:2929) at androidx.fragment.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:436) at androidx.appcompat.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:196) at androidx.appcompat.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:109) at androidx.appcompat.app.AppCompatDelegateImpl.onMenuItemSelected(AppCompatDelegateImpl.java:888) at androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:840) at androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158) at androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:991) at androidx.appcompat.view.menu.MenuPopup.onItemClick(MenuPopup.java:128) at android.widget.AdapterView.performItemClick(AdapterView.java:300) at android.widget.AbsListView.performItemClick(AbsListView.java:1163) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3125) at android.widget.AbsListView.onTouchUp(AbsListView.java:3926) at android.widget.AbsListView.onTouchEvent(AbsListView.java:3698) at androidx.appcompat.widget.DropDownListView.onTouchEvent(DropDownListView.java:217) at androidx.appcompat.widget.MenuPopupWindow$MenuDropDownListView.onTouchEvent(MenuPopupWindow.java:129) at android.view.View.dispatchTouchEvent(View.java:8717) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2577) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2300) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2583) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2315) at android.widget.PopupWindow$PopupViewContainer.dispatchTouchEvent(PopupWindow.java:1723) at android.view.View.dispatchPointerEvent(View.java:8907) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4098) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3961) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3523) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3576) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3542) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3652) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3550) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3709) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3523) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3576) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3542) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3550) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3523) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5795) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5769) at android.view.ViewRootImpl.enqueueInputEvent(Vie E/OpenGLRenderer: SFEffectCache:clear(), mSize = 0 W/Adreno-ES20: : GL_INVALID_VALUE Process 14621 terminated. Пока не разобрался что с телефоном. и почему ему не нравиться приложение. .
@AsTaR75256
@AsTaR75256 4 роки тому
Ничем ни помогу, ноут спёрли
@user-bt7nb7lk5j
@user-bt7nb7lk5j 3 роки тому
Делал программу к у вас, при нажатии в меню Поиск устройств ничего не происходит. Вот, что выдаёт в логах: 2020-12-07 22:36:51.277 9834-9834/com.example.arduino D/MainActivity: searchDev: начинаем поиск 2020-12-07 22:36:51.278 9834-9834/com.example.arduino D/BluetoothAdapter: startDiscovery 2020-12-07 22:36:51.296 9834-9834/com.example.arduino D/ViewRootImpl@673f396[PopupWindow:39ed63b]: Relayout returned: old=(555,73,1070,325) new=(555,73,1070,325) req=(515,252)0 dur=6 res=0x1 s={true 490413031424} ch=false 2020-12-07 22:36:51.415 9834-9834/com.example.arduino D/ViewRootImpl@75f7613[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1 2020-12-07 22:36:51.415 9834-9834/com.example.arduino D/InputMethodManager: prepareNavigationBarInfo() DecorView@9fcbf66[MainActivity] 2020-12-07 22:36:51.415 9834-9834/com.example.arduino D/InputMethodManager: getNavigationBarColor() -855310 2020-12-07 22:36:51.420 9834-9834/com.example.arduino D/ViewRootImpl@673f396[PopupWindow:39ed63b]: MSG_WINDOW_FOCUS_CHANGED 0 1 2020-12-07 22:36:51.428 9834-9834/com.example.arduino D/ViewRootImpl@75f7613[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0 1 2020-12-07 22:36:51.429 9834-9834/com.example.arduino D/InputMethodManager: prepareNavigationBarInfo() DecorView@9fcbf66[MainActivity] 2020-12-07 22:36:51.429 9834-9834/com.example.arduino D/InputMethodManager: getNavigationBarColor() -855310 2020-12-07 22:36:51.508 9834-9834/com.example.arduino D/ViewRootImpl@75f7613[MainActivity]: stopped(false) old=false 2020-12-07 22:36:51.508 9834-9834/com.example.arduino D/ViewRootImpl@673f396[PopupWindow:39ed63b]: stopped(false) old=false 2020-12-07 22:36:51.535 9834-9834/com.example.arduino D/ViewRootImpl@75f7613[MainActivity]: Relayout returned: old=(0,0,1080,2220) new=(0,0,1080,2220) req=(1080,2220)0 dur=8 res=0x1 s={true 492200701952} ch=false 2020-12-07 22:36:51.540 9834-9834/com.example.arduino D/ViewRootImpl@75f7613[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1 2020-12-07 22:36:51.540 9834-9834/com.example.arduino D/InputMethodManager: prepareNavigationBarInfo() DecorView@9fcbf66[MainActivity] 2020-12-07 22:36:51.540 9834-9834/com.example.arduino D/InputMethodManager: getNavigationBarColor() -855310 2020-12-07 22:36:51.719 9834-9867/com.example.arduino W/libEGL: EGLNativeWindowType 0x7224438650 disconnect failed 2020-12-07 22:36:51.719 9834-9834/com.example.arduino D/ViewRootImpl@673f396[PopupWindow:39ed63b]: dispatchDetachedFromWindow 2020-12-07 22:36:51.724 9834-9834/com.example.arduino D/InputTransport: Input channel destroyed: '618ea01', fd=77
@AsTaR75256
@AsTaR75256 3 роки тому
Проверьте разрешение в приложении. А так же добавьте разрежения на доступ к местоположению устройства в манифесте. ACCESS_COARSE_LOCATION и ACCESS_FINE_LOCATION. Без этого поиск не будет работать начиная с версии андроид 6.0
@user-bt7nb7lk5j
@user-bt7nb7lk5j 3 роки тому
@@AsTaR75256 я идиот, забыл геолокацию в телефоне включить
@AsTaR75256
@AsTaR75256 3 роки тому
Пользуйтесь библиотекой Dexter под Android для удобной работы с разрешениями для вашего приложения. Ссылка на библиотеку github.com/Karumi/Dexter Статья по использованию (правда на Котлин) medium.com/@ericampire/manage-android-permissions-easily-using-dexter-and-kotlin-453258a4af05
@user-bt7nb7lk5j
@user-bt7nb7lk5j 3 роки тому
@@AsTaR75256 Спасибо
@user-bt7nb7lk5j
@user-bt7nb7lk5j 3 роки тому
@@AsTaR75256 Подскажите в чём проблема, при попытке подключиться к любому устройству выдаёт ошибку в ToastMessage.
Motion Layout in Action | Android Studio Tutorial
14:19
Stevdza-San
Переглядів 68 тис.
McDonald’s MCNUGGET PURSE?! #shorts
00:11
Lauren Godwin
Переглядів 23 млн
Сын Расстроился Из-за Новой Стрижки Папы 😂
00:21
Глеб Рандалайнен
Переглядів 2,7 млн
MINHA IRMÃ MALVADA CONTRA O GADGET DE TREM DE DOMINÓ 😡 #ferramenta
00:40
Arduino CanHacker Lowicel (дружим Ардуино с программой CanHacker)
39:57
Старейшая нерешённая задача [Veritasium]
30:08
USB клавиатура и мышка на обычной Arduino Nano! EasyHID ч.1
8:03
Заметки Ардуинщика
Переглядів 155 тис.
Create a Bluetooth App and control the Arduino
12:20
Electronoobs
Переглядів 371 тис.
Let's build iOS 16 in React Native 🤔
3:53:49
notJust․dev
Переглядів 201 тис.
I7 2600K тест в играх и сравнение с AMD Ryzen
17:53
Samsung or iPhone
0:19
rishton_vines😇
Переглядів 137 тис.