Bagaimana saya bisa mengubah volume?

9

Di rumah saya sering menghubungkan android saya ke beberapa speaker, untuk mendengarkan radio internet. Ingin dapat mengubah tingkat suara melalui perintah di laptop saya.

Saya dapat membuka ssh shell ke telepon, tetapi saya buntu menemukan perintah untuk mengubah volume pada android.

Apakah ada perintah untuk mengubah volume audio di shell android? Atau mungkin ada pendekatan berbeda tanpa ssh yang saya lewatkan sepenuhnya?

Saya menjalankan Android 4.1.

Edit

Jawaban yang diterima harus bekerja untuk perangkat yang di-rooting. Saya masih tertarik untuk mendapatkan jawaban untuk perangkat yang tidak di-root.

kemuraman
sumber

Jawaban:

13

Lihatlah simulasi keyevents di Android dan cari "KEYCODE_VOLUME_UP" dan "KEYCODE_VOLUME_DOWN".

Acara dapat dihasilkan dengan menjalankan "input":

#local shell:
input keyevent 24 #vol up
input keyevent 25 #vol down
#remotely using ssh
ssh your-phone input keyevent 24 #vol up
ssh your-phone input keyevent 25 #vol down

# 'su -c command' to make it run as root (if not already). EDIT: now escaped properly.
ssh your-phone su -c "input\ keyevent\ 24" #vol up
ssh your-phone su -c "input\ keyevent\ 25" #vol down"

Cangkang Anda membutuhkan izin yang sesuai yang paling mungkin untuk mengaktifkan peristiwa masukan. Jika Anda melakukan otentikasi kunci publik dan menjaga kunci pribadi Anda dimuat dalam memori (ssh-add), Anda dapat membuat skrip wrapper dan jalankan saja tanpa terlebih dahulu meminta frasa sandi. Catatan: Ada overhead yang cukup besar untuk 'su' dan 'input', semuanya dalam satu volume penyesuaian membutuhkan 2,5s untuk menyelesaikan di HTC Desire saya.

EDIT2:

shell@android:/ $ id
uid=2000(shell) gid=2000(shell) groups=1003(graphics),1004(input),[...]
shell@android:/ $ time input keyevent 24                                       
    0m0.92s real     0m0.29s user     0m0.06s system

Sepertinya Anda harus menjadi anggota grup input (di sini GID = 2004) untuk memiliki kemampuan untuk menghasilkan keyevents menggunakan 'input'. Juga, saya perhatikan bahwa layar tidak boleh dikunci (dan / atau mati), karena kunci akan mengkonsumsi semua keyevents pada akhirnya. Perhatikan juga bahwa perintah itu memakan waktu hampir 1 detik.

ce4
sumber
Ini terlihat sangat menjanjikan. Perintah diterima oleh shell tanpa kegagalan, tetapi volumenya tidak berubah. Saya mungkin harus bermain lebih banyak dengan izin saya.
mirk
ini berfungsi untuk saya (menggunakan telepon yang terhubung secara lokal melalui "adb shell" dengan root). Kemungkinan besar itu masalah izin. Mungkin melihat logcat jika ada beberapa keluaran tentang panggilan 'input' yang ditolak
ce4
Tidak: Saya pikir saya tidak memiliki akses root. Selain itu, Ini memberitahu saya 'su not found' saat berjalan sebagai pengguna android. Logcat memberikan output sebagai berikut: I/Input ( 2502): InjectKeyEvent: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_VOLUME_UP, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=399847, downTime=399847, deviceId=-1, source=0x101 } I/Input ( 2502): InjectKeyEvent: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_VOLUME_UP, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=399847, downTime=399847, deviceId=-1, source=0x101 }. Saya harus menambahkan bahwa saya baru mengenal android.
mirk
Ok, saya bukan anggota dari kelompok input (1004). Saya akan me-root perangkat saya suatu hari, dan coba lagi.
mirk
Pasti ada opsi untuk tidak membutuhkan root, seperti (mis) menggunakan tasker dengan niat untuk itu (tasker kemungkinan besar memiliki hak yang diperlukan untuk hampir semuanya ...)
ce4