Saya memiliki perangkat nVidia Shield TV, yang menjalankan TV Android.
Untuk mengintegrasikan ini ke dalam pengaturan teater rumah saya, saya harus dapat menentukan apakah perangkat aktif atau tidur.
Untuk perangkat saya yang lain, saya hanya menggunakan ping untuk menentukan ini. Namun, karena perangkat Android pada dasarnya selalu aktif, ini tidak berfungsi dalam kasus ini.
Salah satu cara, tentu saja, adalah menulis aplikasi sederhana, yang membuka port TCP ketika perangkat aktif dan menutupnya ketika sedang tidur.
Pertanyaan saya adalah apakah ada cara yang lebih sederhana, mungkin aplikasi yang ada atau cara lain untuk melakukan ini tanpa mengembangkan aplikasi saya sendiri untuk melakukan ini.
standby
android-tv
Mika Fischer
sumber
sumber
:)
Jawaban:
Tampaknya TV Android nVidia Shield dilengkapi dengan Android 5.1.1 dan pembaruan Marshmallow tersedia sejak bulan Desember saja. Saya berasumsi bahwa Android 5.1.1 adalah versi yang diinstal pada perangkat Anda.
Layanan sistem kueri
Aktifkan adb dalam mode nirkabel di perangkat. Ikuti panduan resmi atau jawaban Izzy ini untuk instruksi, jika perlu.
Anda dapat menemukan status Android - tidur atau bangun - dari berbagai layanan sistem.
Layanan: Daya
Cari string
mWakefulness
dan / atauDisplay Power: state
. Keduanya akan memberi Anda status yang Anda butuhkan.Contoh:
memberi saya
Layanan: Jendela
Cari string
mAwake=true
dan / ataumScreenOnEarly=true
dan / ataumScreenOnFully=true
Contoh:
memberi saya
Layanan: Tampilan
Cari string
mState=OFF
dan / ataumScreenState=OFF
.Contoh:
memberi saya
Gunakan Otomasi
Jika tidak ada layanan sistem yang disebutkan dalam metode sebelumnya bekerja untuk Anda, setup aplikasi otomasi , seperti Tasker atau MacroDroid atau Automate.
Kami sekarang akan menggunakan otomatisasi untuk menulis status Android ke dalam file, seperti mode Tidur untuk tidur dan Sedar saat terjaga.
Tasker ,
MacroDroid
Android sayangnya tidak datang dengan
echo
atauprintf
utilitas, Jika perangkat di-rooting maka Anda dapat menginstal busybox dan merasa damai. Jika tidak, men-download busybox biner , mengatur hak akses executable dan dorong ke dalam/data/local/tmp
menggunakanadb push
. Cara lain untuk perangkat yang tidak di-rooting adalah menyimpan tiga file, satu untuk status, satu dengan teks Tidur dan yang terakhir dengan teks Sedarlah. Setiap kali layar mati / hidup, salin file kedua / ketiga menjadi yang pertama.MacriDroid juga membutuhkan plugin, seperti Pengaturan Aman untuk menjalankan perintah.
Tindakan: Pengaturan Aman → Tindakan → Jalankan Perintah:
echo Sleeping > FILE_PATH
Tindakan: Pengaturan Aman → Tindakan → Jalankan Perintah:
echo Awake > FILE_PATH
Untuk Android yang tidak di-root,
echo
harus diganti dengan./data/local/tmp/busybox echo
. Jika tidak, lakukan operasi penyalinan menggunakan perintahcp SOURCE DESTINATION
.Mengotomatisasikan
Aliran Anda harus lebih atau kurang terlihat seperti gambar ini
(Klik gambar untuk memperbesar)
Kebutuhan Anda untuk menciptakan dua aliran, satu untuk tidur dan lainnya untuk bangun. Blok kedua dalam aliran bernama Siaran terima dan dapat ditemukan di bawah Aplikasi. Blok ketiga bernama File write text dan dapat ditemukan di bawah File & Storage.
Anda sekarang dapat memeriksa konten file tersebut menggunakan adb dalam mode nirkabel atau menggunakan SSH (memerlukan server SSH di Android; jalankan server di semua antarmuka dan jangan ikat ke satu antarmuka.)
Ada kemungkinan lain, seperti membuat aplikasi otomasi Anda mengunggah file ke server lokal atau jauh sehingga Anda dapat meminta server itu alih-alih Android untuk mengetahui status.
sumber
Ini sebenarnya bukan solusi tetapi dalam pengaturan perangkat mungkin ada opsi yang menonaktifkan Wi-Fi saat perangkat beralih ke mode siaga. Bahkan jika tidak ada opsi seperti itu, saya yakin pasti ada aplikasi untuk ini. Jadi jika Wi-Fi dinonaktifkan dalam status IDLE maka pendekatan "ping" akan berfungsi tetapi Anda harus berurusan dengan pembaruan latar belakang yang tidak berfungsi dan seterusnya saat perangkat masuk ke status IDLE.
Saya tidak berpikir bahwa ada aplikasi default untuk solusi ini, tetapi mungkin poin lebih lanjut akan membantu Anda. Anda dapat membuat aplikasi Android Anda sendiri yang mendengarkan PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED
Intent
dan setelah menerima beberapa jenis permintaan dari server Anda, ia dapat mengirim kembali jika perangkat dalam keadaan sadar atau tidak. Namun perhatikan bahwa ketika perangkat Anda menerima permintaan server, perangkat itu mungkin akan bangun.sumber
Anda dapat mengatur skrip shell untuk mengetahui apakah perangkat dalam mode siaga .. jika perangkat idle .. maka Anda dapat
mengirim sinyal ke perangkat .. Misalnya Anda dapat menggunakan perintah shell adb seperti di bawah ini: adb shell dumpsys deviceidle
sumber
dumpsys deviceidle
tidak benar-benar berfungsi pada ponsel saya setidaknya (memberiCan't find service: deviceidle
).