— === Menu === —

🏗️ 1. Android Framework
⏱……….©️ Application components
⏱……….💠 Android Framework
⏱……….🏭 Android Architecture
⏱……….🗼Android Architecture Components
⏱……….👁‍🗨 ViewModel
⏱……….♐️ Project Structure
⏱……….©️ Components → New Android project
⏱……….🔧 Android SDK
⏱……….🆙 App Launched
⏱……….🏁 Android Flag of Activity
⏱……….♌️ Intent
⏱……….📑 Android Manifest
⏱……….♨️ Gradle Build System
⏱……….🎢 Activities and Fragments
⏱……….💱 App Lifecycle
⏱……….📰 Fragment Lifecycle
⏱……….💢 Configuration Changes

📝2. Design and View
🖱……….🏺 What Is Material Design?
🖱……….📲 Different Screen Sizes
🖱……….🖌 Layouts in Android
🖱……….🔗 ConstraintLayout
🖱……….🎑 MotionLayout
🖱……….♻️ RecyclerView
🖱……….♻️RecyclerView Vs. 📜 ListView
🖱……….🌐 Localization

💣 3. Test ☠……….📁 test &. androidTest ☠……….💊 Unit Tests ☠……….💉…


If you have trouble 😟 understanding the Android Tutorials of GStreamer, you can wind back to the C basic Tutorials, which have more detail 😇 to describe how the GStreamer plugin works 🛠.

— === Menu === —

🍬1. Download 1.8.13
♖…………➕ Path: Add bin Directory
♖…………➕ System variable
♖…………📹 CMD — — Video Test
♖…………🏓 CMD — — Pingpong Test
🍖 2
. Download the Tutorials
👨‍💼 3
. VS2019 — — tutorials.sln
🐭4
. Fix basic-tutorial-1
♖…………👷🏿 Working Directory
♖………… ⎌ C++ Additional Include
♖…………📞 Linker
👨‍🏫5. Analyze basic-tutorial-1
♖…………3️⃣ Variables
♖…………⚗️ Source
♖…………🚚 bus → Express Mail
♖…………♻️ Recycle
👻6
. Test with the Wrong Link

🍬1. Download 1.8.13 …… →Menu


❓: Why do I use Dagger-Hilt🔪?

😍: Because it’s convenient to inject the object/class on any views. Second, I can use this singleton item to save time to transfer data. You don’t need to recreate a new instance in another view, save old data into a cache, and load them onto the new instance. Aren’t you working in the way that I am talking about?

😱: Blah, blah, blah! It’s a hell of the circle.

😄: Don’t worry, the Hilt can save a lot of works for you. Let’s add something to the MediaPlayer.

— === Menu === —

🐐…


Good News😍: Tutorial 4 is a real player! It loads a 52s online video🎬, so you can test the player. The C code has no much increased than Tutorial 3. It’s simpler than the other tutorial. But I like you to challenge this tutorial to decouple the C code from the activity and redesign the pattern from MVC to MVVM. Don’t you like challenges?

🤔: Yeah, can I …
🦸‍♂️: Good! Let’s begin.

— === Menu === —

🏗️ 1. Insert a Common Module 🏳………🔌 Modify Gradle 🏳………🔗 Add Shared Functions 🏳………📦 Add GStreamer.java ♋️ 2. Translate Tutorial 4 to…


😄: Don’t you like Part 2? That is an audio player without an audio file. Don’t be surprised! Part 3 has a similar method.
😲: What?
😅: It’s the video player without a video file because it broadcasts the same image repeatedly. In this tutorial, you’ll learn visual effects on the video screen.

— === Menu === —

👶 1. Make Tutorial-3 Run
👽 2
. Translate to Kotlin
🎁 3
. New View: GStreamerSurfaceView
🔀 4
. Comprare Tutorial-2 and Tutorial-3
👻 5
. How does the video play?
🎊 6
. Special Effects
📆 7
. Subtitle

👶 1. Make Tutorial-3 Run

< === Menu

Image for post
Image for post

If you have gone…


Let’s continue to Tutorial #2. This is a very simple 🔊 audio player. The C code is more complex than the first one. I assume that you are familiar with C/C++ 👌. Don’t worry, you’ll be known them well if you are a coder of Java or another programming language, because C is the 👸🏼 mother Queen among them. By following my steps, you’d have clear clue how the GStream audio player works. let’s dig into the Tutorial-2.

— === Menu === —

🤖 0. Update Project from Tutorial-2 to Tutorial-5 🐣 1. Purpose of Tutorial-2 🚁 2. Java to…


GStreamer is commonly found in a lot of hardware (such as Intel, NEC) and software (such as Media player). Some scientists claimed that the analysis functions of GStreamer helped them find the Gravity Wave of the universe. GStreamer is Cool!

On the site of GStreamer, it trains people how to use it freely, even in Android. However, those tutorials won’t be easily understood by newbies 😣 or lack skills in JNI and C/C++. I will break down each tutorial one by one, so you can study the GStreamer library in a better way😍.

— === Menu === —

🎬1. Prepare…


This is a simple experiment to match the LED location by OpenCV. Each LED of the ‎️‍🌈RGB LED strip has an individual address. You can lit up one by the index of a list; for example, x[3], the 4th LED will be bright. Also, you can control the color by three groups of ‎️‍🌈RGB color codes. At the end of the project, you can use the camera 📷 to pinpoint the location when the LED lit up.

— === Menu === —

🍀1. Install PyCharm & Python
🔧2. Hardware Installation
⚙️3. Software Setup for Hardware
🐍4. Python: Frame Capture

🍀1. Install PyCharm & Python

<…


Let’s continue from Part 1. Part two will focus on Bluetooth connection. I promise that you will turn on the LED light asynchronously on Android. Let the fun time begin.

— === Menu === —

🐰1. Update: Fix No Input UI after Disappeared Password Input
👨‍❤️‍👨2
. Brothers:Handler & Thread
→ → →
【 ➰ 】 bondThread
→ → → ➰ 】ConnectedThread
→ → → 👨‍💼 Handler
🖐🏻3
. Step 4:Bonding, Connect Test
🌟4
. Light up the LED
🔀5
. Asynchronous Method to Light Up LED
🔄6. Use UUID as Switch

🐰1. Update: Fix No Input UI after Disappeared Password Input

←←← Menu

Some of my friends may found that Bonding Password input will be automatically disappeared…


Bluetooth SSP is one kind of Bluetooth Profile. Unlike a headset of other Bluetooth devices, you treat it like a remote USB. It’s popular because you can find this profile on the HC05/HC06 module. We can connect these modules to hardware like Arduino, Raspberry Pi. In this story, I’ll install an HC05 module to control a LED light. It’s a popular experiment online, but I want to do it myself. 🤩: It’s a DIY fun in COVID Period!

— === Menu === —

👷🏼 1. Hardware 🐋 2. VS Code — C programming ⌨ 3. C Programming:LED flash 🏢 4. Android Studio: MVVM and Gradle

Homan Huang

Computer Science BS from SFSU. I studied and worked on Android system since 2017. If you are interesting in my past works, please go to my LinkedIn.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store