サウンドカードのないマシンでAndroid-x86で音声再生に対応するには?
サウンドカード搭載されていないマシン(VPS、GCE、EC2など)で、
Android-x86を動作させたいのですが、音声再生に失敗して正常に動作しないアプリが多く困っています。
回避策はないでしょうか?
■設定例
VM: VirtualBox 5.2.6 (「オーディオを有効化」をチェック外す)
インストール方法: 一度Debian 9.3で構築後、下記などど実行し、GRUBから起動
alien -ci android-x86-6.0-r3.x86_64.rpm
上記環境で、
cp /android-6.0-r3/system.sfs /tmp/
mkdir /tmp/system-img
cd /tmp/
unsquashfs system.sfs
mount squashfs-root/system.img /tmp/system-img
vi /tmp/system-img/etc/init.sh
mksquashfs system-img system_new.sfs
cp system_new.sfs /android-6.0-r3/system.sfs
などとして、init.sh内でコメントアウトされている下記のコメントを外す
# [ -d /proc/asound/card0 ] || modprobe snd-dummy
■確認したこと
カーネルモジュールの読み込み状況
adb -s x.x.x.x:5555 shell 'su root lsmod' Module Size Used by snd_dummy 13393 0 snd_pcm 90336 1 snd_dummy snd_timer 21404 1 snd_pcm snd 67870 3 snd_dummy,snd_pcm,snd_timer soundcore 6811 1 snd binfmt_misc 9331 1 uvesafb 22118 2 cn 4985 2 uvesafb btusb 32289 0 btrtl 4762 1 btusb btbcm 7192 1 btusb btintel 8579 1 btusb bluetooth 451936 4 btusb,btrtl,btbcm,btintel 8250_fintek 2958 0 parport_pc 17448 0 parport 27029 1 parport_pc acpi_cpufreq 11129 0 pcspkr 2222 0 psmouse 105313 0 atkbd 17220 0 aesni_intel 159317 0 aes_x86_64 8043 1 aesni_intel i2c_piix4 11222 0 joydev 9216 0 mac_hid 3900 0 e1000 113540 0
YouTubeアプリで適当な動画を再生し、「再生中に問題が発生しました」などと表示される
logcatで問題となっているようなメッセージ出力を確認
02-01 11:57:15.954 1088 1088 W audio_hw_primary: Unable to find the mixer 02-01 11:57:15.954 1088 1088 I AudioFlinger: loadHwModule() Loaded primary audio interface from Grouper audio HW HAL (audio) handle 1 02-01 11:57:15.954 1088 1088 I AudioFlinger: openOutput(), module 1 Device 2, SamplingRate 48000, Format 0x000001, Channels 3, flags 2 02-01 11:57:15.988 1088 1088 I AudioHwDevice: openOutputStream(), HAL returned sampleRate 48000, Format 0x1, channelMask 0x3, status -19 02-01 11:57:15.989 1088 1088 W APM::AudioPolicyManager: Cannot open output stream for device 00000002 on hw module primary 02-01 11:57:15.989 1088 1398 I AudioFlinger: AudioFlinger's thread 0xf4680000 ready to run 02-01 11:57:16.009 1091 1091 I SamplingProfilerIntegration: Profiling disabled. 02-01 11:57:16.034 1088 1088 I AudioFlinger: loadHwModule() Loaded a2dp audio interface from A2DP Bluez HW HAL (audio) handle 4 02-01 11:57:16.037 1088 1088 I AudioFlinger: loadHwModule() Loaded usb audio interface from USB audio HW HAL (audio) handle 5 02-01 11:57:16.037 1088 1088 W APM::AudioPolicyManager: Input device 00000002 unreachable 02-01 11:57:16.037 1088 1088 E APM::AudioPolicyManager: Default device 00000002 is unreachable 02-01 11:57:16.037 1088 1088 E APM::AudioPolicyManager: Failed to open primary output 02-01 11:57:16.037 1088 1088 E APM::AudioPolicyEngine: getDeviceForStrategy() speaker device not found for STRATEGY_SONIFICATION 02-01 11:57:16.037 1088 1088 E APM::AudioPolicyEngine: getDeviceForStrategy() speaker device not found for STRATEGY_SONIFICATION 02-01 11:57:16.037 1088 1088 E APM::AudioPolicyEngine: getDeviceForStrategy() no device found for STRATEGY_TRANSMITTED_THROUGH_SPEAKER 02-01 12:01:14.823 1088 1873 W APM::AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0 02-01 12:01:14.824 1088 1402 W APM::AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 0,format 0, channels 3, flags 0 02-01 12:01:14.825 1088 1452 W APM::AudioPolicyManager: getOutput() could not find output for stream 1, samplingRate 44100,format 1, channels 3, flags 4 02-01 12:01:14.825 1404 1451 E AudioTrack: Could not get audio output for session 9, stream type -1, usage 13, sample rate 44100, format 0x1, channel mask 0x3, flags 0x4 02-01 12:01:14.825 1404 1451 E SoundPool: Error creating AudioTrack