Az Az Ez a cikk kizárólag oktatási célokra szolgál. ne sértse meg a törvényt, legyen kedves a gyermekeihez, és ne felejtsd el, hogy te vagy a felelős azért, amit a saját eszközeivel csinálsz. Ez a cikk kizárólag oktatási célokra szolgál. ne sértse meg a törvényt, legyen kedves a gyermekeihez, és ne felejtsd el, hogy te vagy a felelős azért, amit a saját eszközeivel csinálsz. A probléma, amiről senki nem beszél A digitális alvási paradoxon egy olyan korban, amikor a képernyők uralják az alvási rutinokat, milliók most elaludnak a YouTube videók, podcastok vagy streaming alkalmazások előtt. Ennek a szokásnak azonban van egy rejtett költsége: ellenőrizetlen hangerő expozíció, különösen a gyermekek számára. mint szülő és fejlesztő, első kézből szembesültem ezzel a problémával - gyermekeim késő éjszakai YouTube bingjai nyugtalan alváshoz és reggeli ingerlékenységhez vezettek. Ingyenes alkalmazások a Google Play Áruházban, például az , Talán a kereskedelmi alkalmazások jobbak lennének, de ezt nem teszteltem, mivel pénzbe kerülnek, gyakran eléggé. Volumen korlátozás Volumen ellenőrzés Teljesen illegális (Totally Illegal...ish) Építettem egy forgatókönyvet, amely vezeték nélkül csatlakozik az Android készülékhez, és figyelemmel kíséri a hangerőt. Ha túl hangos lesz - óvatosan lecsökkenti. Nincs megálló videó, nincs képernyő villogása, nincs felhasználói interakció. Csak csendes mágia. Igen, technikailag használja az ADB-t (Android Debug Bridge) a Wi-Fi-n keresztül, amely egy fejlesztői eszköz, és nem az ágyban történő szülői tevékenységre szánt. Fejlesztési környezetének kialakítása A fejlesztési környezet és a kapcsolódás beállítása döntő fontosságú, mielőtt beleveted magad a kódba.Ez biztosítja, hogy rendelkezel az összes szükséges eszközzel és könyvtárral, és egyszerűsíti a fejlesztési folyamatot. A macOS-ot használom, így a történet összes példája ebben a rendszerben lesz, de a Windows használata nem teszi a folyamatot sokkal nehezebbé a macOS-hoz képest.Az egyetlen különbség az, hogy a macOS operációs rendszerben a Python már telepítve van, és a Windows-ban itt kell telepítenie a Python-t: Windows Python használata Íme egy részletesebb bontás: Az Az Az Az Az Download and Extract Platform Tools: Go to the official Android Developers website: Navigate to Android SDK Platform-Tools. Download the SDK Platform Tools: Download the latest version for your operating system (Windows, macOS, or Linux). Extract the ZIP file: Extract the downloaded ZIP file to a location of your choice (e.g., C:\adb on Windows). Add Platform Tools a rendszer Path: Windows: Nyissa meg a "Environment Variables" beállításokat (keresse meg a "Environment Variables" a Start menüben). Kattintson a "Edit the system environment variables". Kattintson a "Environment Variables". A "System variables" szakaszban keresse meg a "Path" változót, válassza ki, majd kattintson a "Edit" gombra. Kattintson a "New" gombra, és adja hozzá az utat a platform-eszközök könyvtárához (pl.: C:\adb). macOS/Linux: Nyissa meg terminálját. Adja hozzá az utat a platform-eszközök könyvtárához a shell konfigurációs fájlához (pl.: ~/.bashrc, ~/.zshrc). Például Ellenőrizze az ADB telepítését: Nyissa meg a parancssori felületet (CLI): A Windows Search Bar (Windows OS) használatával: Kattintson a Start gombra vagy a nagyító üveg ikonra a feladatmezőben. Írja be a "cmd" (címjegyek nélkül) a keresőmezőbe. Kattintson a "Command Prompt" eredményre. A rendszergazdaként való futtatáshoz kattintson jobbra a "Command Prompt" gombra a keresési eredményekben, majd válassza ki a "Run as administrator" lehetőséget. Spotlight Search (macOS) használatával: Kattintson a nagyító üveg ikonra a menüsávban (vagy nyomja meg a Cmd+Space gombot). Írja be a "Terminál" gombot, majd Engedélyezze az USB hibakeresést az Android készülékén: Menjen az "Beállítások" menüpontra az Android készüléken. Görgessen lefelé, és válassza ki a "Telefonról" lehetőséget. Keresse meg a "Build Number" lehetőséget, és koppintson rá 7 vagy több alkalommal a Fejlesztői beállítások feloldásához. Menjen vissza a fő "Beállítások" oldalra, és most látni fogja a "Developer Options" lehetőséget. Válassza ki a "Developer Options" lehetőséget. Görgessen lefelé az "USB hibakeresés" lehetőségre, és kapcsolja be. Mostantól csak a parancssorban fogunk dolgozni, az én esetemben a terminál lesz. Hozd létre a kapcsolatot A következő lépés a mobileszköz csatlakoztatása a PC-hez. Ez egy viszonylag egyszerű lépés, amely két részből áll: Az Az Az a vezetékes kapcsolat; Vezeték nélküli kapcsolat. A vezetékes kapcsolat: Csatlakoztassa a mobileszközt a számítógéphez a kábellel (USB A/USB C vagy USB A/micro USB, stb.). Ezután nyissa meg a terminált, és írja be a következő parancsot: adb devices Egyelőre készen állunk a TCP/IP mód engedélyezésére a következő parancs segítségével: adb tcpip 5555 Ha már a terminálban vagyunk, akkor ellenőrizhetjük a mobil eszköz IP-címét a Wi-Fi hálózatunkban anélkül, hogy megnéznénk a mobil eszközt. Végezzük el a következő parancsot, hogy megtudjuk az IP-címet, amelyre később szükségünk lesz a vezeték nélküli kapcsolat létrehozásakor: adb -d shell "ip route | awk '/wlan0/ {print \$9}'" Wireless Connection: Most, hogy megvan a készülék IP-címe, itt az ideje, hogy vezeték nélkül csatlakozzon. Nincs többé szükség vezetékes kapcsolatra. Az USB-kábelt biztonságosan ki lehet kapcsolni, a többi varázslat a Wi-Fi-n keresztül történik. adb tcpip 5555 Győződjön meg arról, hogy mind az okostelefon, mind a számítógép ugyanazon a Wi-Fi hálózaton van. Ezután a terminálban írja be a következő parancsot: adb connect <DEVICE_IP>:5555 Például, ha a készülék IP Ön belépett volna: 10.0.0.108 adb connect 10.0.0.108:5555 Ha minden jól megy, egy ilyen üzenetet fog látni: Beszéljünk megint a problémáról Tegyünk egy lépést hátra, és emlékezzünk arra, amit megoldunk. Gyermeke békésen elalszik egy csendes videó megtekintésében - talán egy alvási történet vagy néhány pihentető hang. De két órával később? A YouTube automatikus lejátszása bekapcsolódik, egy hangos hirdetésbaleset, vagy egy nagy energiájú rajzfilm hangja felébreszti őket. Groggyek. Groggy vagy. Mindenki elkezdi a napját már kiürült. Amire szükségünk volt egy csendes őrzőre - valami láthatatlan és megbízható. Egy rendszer, amely finoman csökkenti a hangerőt a háttérben anélkül, hogy megállítaná a lejátszást, anélkül, hogy felugorná az irritáló pop-upokat, és anélkül, Építészet egy pillantás alatt Íme egy gyors diagram, amely megmutatja, hogyan kapcsolódik össze minden: Az Az A számítógép (a Python script futtatásával) csatlakozik az Android eszközhöz az ADB-n keresztül Wi-Fi-n keresztül, rendszeresen figyeli a hangerőt, és szükség esetén csökkenti azt. A számítógép (a Python script futtatásával) csatlakozik az Android eszközhöz az ADB-n keresztül Wi-Fi-n keresztül, rendszeresen figyeli a hangerőt, és szükség esetén csökkenti azt. A forgatókönyv, ami varázslatot tesz A megoldás lényege egy Python-szkript, amely Wi-Fi-n keresztül kommunikál az Android-eszközével az ADB-n keresztül. Ha a hangerő meghaladja az 5 pontot (az Android rendszerint 15-pontos skálát használ), a szkript gyengéden lecsökkenti azt – egy lépésenként, rövid szünetekkel. A legjobb része? Tiszteletben tartja a kézi változtatásokat. Ha valaki maga csökkenti a hangerőt, a forgatókönyv észreveszi, és nem zavarja. Csendes. Alkalmazkodó. Láthatatlan – csakúgy, mint egy jó alvási asszisztensnek. A forgatókönyv evolúciója: a kicsi hacktól a megbízható eszközig Amikor először írtam ezt a forgatókönyvet, alig volt néhány sor hosszú. Valami ilyennek látszott: import subprocess import time import re def get_stream_volume(): cmd = "adb shell dumpsys audio | awk '/- STREAM_MUSIC:/{flag=1; count=0} flag && count<=5 {print; count++} /^$/{flag=0}'" result = subprocess.run(cmd, shell=True, capture_output=True, text=True) match = re.search(r'streamVolume:(\d+)', result.stdout) return int(match.group(1)) if match else None def set_volume(level): cmd = f"adb shell cmd media_session volume --stream 3 --set {level}" subprocess.run(cmd, shell=True) print(f"Volume set to {level}") def monitor_volume(): while True: volume = get_stream_volume() if volume is None: print("Failed to get volume level. Retrying...") time.sleep(5) continue print(f"Current volume: {volume}") if volume == 15: for vol in range(14, 4, -1): set_volume(vol) time.sleep(30) while get_stream_volume() == 5: print("Volume is at 5, monitoring every 60 seconds...") time.sleep(60) if __name__ == "__main__": monitor_volume() os.system("adb shell dumpsys audio | grep -i 'streamVolume'") De hamarosan a valóság bekapcsolódott.Mi történik, ha az eszköz az éjszaka közepén kikapcsol? Mi van, ha az ADB időzítést dob? Mi van, ha a telefon nem párosul? Mi van, ha a forgatókönyv összeomlik, miközben mindenki alszik? A forgatókönyv fejlődött. Az Az Az Az Az Az Az Az Néha a készülék nem volt csatlakoztatva, így hozzáadtam az adb connect ip:portot. Időnként az ADB éjfélkor összeomlott, kivételes kezelést és retrieket adtam hozzá. Hát igen, ezt is hozzátette. Fájl naplózás és konzol naplózás? Most a forgatókönyv ezt is nyomon követi – és csak szükség esetén avatkozik be. Figyelemmel kíséri a frekvenciát? Különböző intervallumok magas vs. alacsony hangerő. És igen, graceful shutdown Ctrl + C. What started as a few lines of script turned into a tiny watchdog that babysits your phone — so you don’t have to. import subprocess import time import re import logging from datetime import datetime logging.basicConfig( filename='volume_control.log', level=logging.INFO, format='[%(asctime)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) ADB_DEVICE = "10.0.0.108:5555" def log(message): timestamp = get_timestamp() print(f'[{timestamp}] {message}') logging.info(message) def get_timestamp(): return datetime.now().strftime('%Y-%m-%d %H:%M:%S') def connect_adb(): subprocess.run(f"adb connect {ADB_DEVICE}", shell=True) log(f"Reconnected to ADB at {ADB_DEVICE}") def get_stream_volume(): cmd = "adb shell dumpsys audio | awk '/- STREAM_MUSIC:/{flag=1; count=0} flag && count<=5 {print; count++} /^$/{flag=0}'" result = subprocess.run(cmd, shell=True, capture_output=True, text=True) match = re.search(r'streamVolume:(\d+)', result.stdout) return int(match.group(1)) if match else None def safe_get_stream_volume(retries=3, delay=5): for attempt in range(retries): volume = get_stream_volume() if volume is not None: return volume log(f"Attempt {attempt + 1}: Failed to get volume. Retrying after reconnect...") connect_adb() time.sleep(delay) log("All attempts failed. Giving up temporarily.") return None def set_volume(level): cmd = f"adb shell cmd media_session volume --stream 3 --set {level}" subprocess.run(cmd, shell=True) log(f"Volume set to {level}, waiting 30 seconds...") def monitor_volume(): while True: volume = safe_get_stream_volume() if volume is None: log("Initial volume read failed. Retrying in 30 seconds...") time.sleep(30) continue log(f"Current volume: {volume}") while volume > 5: set_volume(volume - 1) time.sleep(30) volume = safe_get_stream_volume() if volume is None: log("Failed to read volume during decreasing.") break while True: volume = safe_get_stream_volume() if volume is None: log("Failed to read volume during monitoring.") time.sleep(30) break if volume > 5: log(f"Volume increased to {volume}, restarting decreasing") break log(f"Volume is at {volume}, monitoring every 60 seconds...") time.sleep(60) if __name__ == "__main__": try: monitor_volume() except KeyboardInterrupt: log("Script stopped by user (Ctrl+C)") except Exception as e: log(f"Unexpected error: {e}") finally: log("Script exited.") Ma a script termelési szintű – és nyílt forráskódú. de győződjön meg róla, hogy megváltoztatja ezt a vonalat ADB_DEVICE = "10.0.0.108:5555" a szkripten az IP-címét a A . „A kapcsolatod megteremtése” A forgatókönyv futtatása: Két egyszerű lehetőség, valamint a Cron Két fő módja van a forgatókönyv futtatására: Az Az Közvetlenül a Python Ha telepítve van a Python 3, akkor egyszerűen futtathatja: python3 reduce_volume.py Azonnal elindul, és csendben végzi a munkáját a háttérben. Az Az Mint egy önálló végrehajtható Szeretné megosztani valakivel, akinek nincs telepítve a Python? A forgatókönyvet önállóan is átalakíthatja macOS vagy A Windows használatával A következő: .app .exe petefészek pyinstaller --onefile reduce_volume.py Ez egy hordozható alkalmazást hoz létre, amely dupla kattintással indítható - nincs szükség Pythonra. Az Az Még egy cron munkával vagy feladatok ütemezésével is ütemezheti, ha fantasztikus. Egy másik dolog: Távoli ADB korlátozások Fontos megjegyezni, hogy az ADB a Wi-Fi-n keresztül törékeny lehet. A távoli kapcsolat megszakad, ha: Az Az Az Az Az A telefon újraindul. Változik a Wi-Fi hálózat A fejlesztő mód vagy az USB Debugging kikapcsolva van. A készülék túl sokáig működik ADB aktivitás nélkül (egyes rendszerek automatikusan bekapcsolják az inaktív kapcsolatokat). És sokan mások... Tehát, ha a forgatókönyv nem működik, csak ismételje meg a A következő: „A kapcsolatod megteremtése” Az Az Az Az Csatlakoztassa a mobileszközt vezetékkel a személyes számítógépéhez. Adb tcpip 5555 Adb tcpip 5555 Adb tcpip 5555 Adb Connect <DEVICE_IP> 5555 letöltés adb connect 10.0.0.108:5555 Visszatérsz az üzleti életbe. Végső gondolatok Ez a hack nem arról szól, hogy elhallgassa gyermeke szórakozását, hanem arról, hogy megvédje alvását - és az egészségét - a váratlan technológiai meglepetésekkel szemben. Ez lehet egy kis forgatókönyv, de a családom és én számára életmódot változtatott. Nincs több 2 AM YouTube ébresztés. Nincs több csúnya reggel. Csak békés éjszakák és egy finom kis szülői automatizálás. Az Az Az Az Az Az Az Az Ez egy kis hackelés? Ez megbízhatóan működik? Technikailag igen, de szürke zónában működik (az ADB-hozzáférést és az automatizált vezérlést a Google hivatalosan nem támogatja a végfelhasználók számára). Mindaddig, amíg segít egy fáradt szülőnek (vagy akár magának) jobban aludni - megéri. Ez a Subtle. Ez a láthatatlan. És ez működik. Tudassa velem, hogy szeretné-e a forráskódot, egy kattintással történő telepítést vagy egy továbbfejlesztett verziót. And hey — sleep well. You’ve earned it. Az Az P.S. Ez a megoldás javítható és bővíthető - például ütemtervet állíthat be, alkalmazkodik a különböző profilokhoz, nyomon követi az eszköz aktivitását stb. De még alapvető formájában is megoldja a fő problémát: segít elaludni - és békésen aludni. P.S. Ez a megoldás javítható és bővíthető - például ütemtervet állíthat be, alkalmazkodik a különböző profilokhoz, nyomon követi az eszköz aktivitását stb. De még alapvető formájában is megoldja a fő problémát: segít elaludni - és békésen aludni.