問題タブ [android-mediasession]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - MEDIA_ERROR_SERVER_DIED API 23 での通話から戻るが、27 ではありません
サーバーからオーディオ ファイルをストリーミング MediaSessionCompat
するために とを使用するアプリを維持する必要があります。MediaPlayer
Pixel XL と Nexus 5 (API 23) で再現したバグがありますが、これは (API 27) を実行している同じデバイスでは発生しません。API 28 を実行している XL ユーザーの報告も聞いたことがあります。
電話がかかってくると、アプリはそれをダッキングできないため、一時停止します。API 27 で、呼び出しが終了し、アプリがオーディオ フォーカスを取得し、再び再生を開始します。API 23 (および 28? 私は確認していません) では、呼び出しが終了するとすぐに Media Server がエラー 100 ( MEDIA_ERROR_SERVER_DIED
) でクラッシュします。通話が終了するたびに確実にクラッシュします。
私はそれの頭も尻尾も作ることができません。
27では問題ないが23では問題ない理由、またはクラッシュを防ぐために何ができるかを知っている人はいますか(クラッシュ後にすべてを元に戻そうとするのではなく)?
スタックトレースはこんな感じ
10-31 17:36:04.499 8062-8074/? A/AudioTrackShared: Assertion failed: buffer == NULL || buffer->mFrameCount == 0
10-31 17:36:04.499 8062-8074/? A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 8074 (FastMixer)
10-31 17:36:04.500 1362-1362/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
10-31 17:36:04.500 1362-1362/? A/DEBUG: Build fingerprint: 'Android/sdk_google_phone_x86/generic_x86:6.0/MASTER/5056751:userdebug/test-keys'
10-31 17:36:04.500 1362-1362/? A/DEBUG: Revision: '0'
10-31 17:36:04.500 1362-1362/? A/DEBUG: ABI: 'x86'
10-31 17:36:04.500 1362-1362/? A/DEBUG: pid: 8062, tid: 8074, name: FastMixer >>> /system/bin/mediaserver <<<
10-31 17:36:04.500 1362-1362/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
10-31 17:36:04.500 1639-1727/system_process W/NativeCrashListener: Couldn't find ProcessRecord for pid 8062
10-31 17:36:04.502 1362-1362/? A/DEBUG: Abort message: 'Assertion failed: buffer == NULL || buffer->mFrameCount == 0'
10-31 17:36:04.502 1362-1362/? E/DEBUG: AM write failed: Broken pipe
10-31 17:36:04.502 1362-1362/? A/DEBUG: eax 00000000 ebx 00001f7e ecx 00001f8a edx 00000006
10-31 17:36:04.502 1362-1362/? A/DEBUG: esi b427f980 edi 00000000
10-31 17:36:04.502 1362-1362/? A/DEBUG: xcs 00000073 xds 0000007b xes 0000007b xfs 00000000 xss 0000007b
10-31 17:36:04.502 1362-1362/? A/DEBUG: eip b6fb7f56 ebp 00001f8a esp b427ee80 flags 00200206
10-31 17:36:04.504 1362-1362/? A/DEBUG: backtrace:
10-31 17:36:04.504 1362-1362/? A/DEBUG: #00 pc 00083f56 /system/lib/libc.so (tgkill+22)
10-31 17:36:04.504 1362-1362/? A/DEBUG: #01 pc 000815e8 /system/lib/libc.so (pthread_kill+70)
10-31 17:36:04.504 1362-1362/? A/DEBUG: #02 pc 00027205 /system/lib/libc.so (raise+36)
10-31 17:36:04.504 1362-1362/? A/DEBUG: #03 pc 000209e4 /system/lib/libc.so (abort+80)
10-31 17:36:04.504 1362-1362/? A/DEBUG: #04 pc 0000cbc3 /system/lib/libcutils.so (__android_log_assert+128)
10-31 17:36:04.504 1362-1362/? A/DEBUG: #05 pc 0008353d /system/lib/libmedia.so (android::ServerProxy::obtainBuffer(android::Proxy::Buffer*, bool)+669)
10-31 17:36:04.504 1362-1362/? A/DEBUG: #06 pc 00053af7 /system/lib/libaudioflinger.so
10-31 17:36:04.504 1362-1362/? A/DEBUG: #07 pc 00066155 /system/lib/libaudioflinger.so
10-31 17:36:04.504 1362-1362/? A/DEBUG: #08 pc 0002630a /system/lib/libaudioflinger.so
10-31 17:36:04.504 1362-1362/? A/DEBUG: #09 pc 00026d42 /system/lib/libaudioflinger.so
10-31 17:36:04.504 1362-1362/? A/DEBUG: #10 pc 00025e93 /system/lib/libaudioflinger.so
10-31 17:36:04.504 1362-1362/? A/DEBUG: #11 pc 0006c19a /system/lib/libaudioflinger.so
10-31 17:36:04.504 1362-1362/? A/DEBUG: #12 pc 0006d88f /system/lib/libaudioflinger.so
10-31 17:36:04.504 1362-1362/? A/DEBUG: #13 pc 00014aac /system/lib/libutils.so (android::Thread::_threadLoop(void*)+418)
10-31 17:36:04.504 1362-1362/? A/DEBUG: #14 pc 000141cf /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+122)
10-31 17:36:04.504 1362-1362/? A/DEBUG: #15 pc 00080a93 /system/lib/libc.so (__pthread_start(void*)+56)
10-31 17:36:04.504 1362-1362/? A/DEBUG: #16 pc 00021952 /system/lib/libc.so (__start_thread+25)
10-31 17:36:04.504 1362-1362/? A/DEBUG: #17 pc 000170b6 /system/lib/libc.so (__bionic_clone+70)
android - Android エミュレーターがメディア ボタンのコールバックを受信しない
電話にアプリをインストールし、ヘッドセットのボタンを押したときにコールバックが意図したとおりに実行されましたが、エミュレーターでは何もしません。
メディア ボタンの押下は、次のコードで生成されます。
興味深いことに、このコマンドで発信通話を停止できます。
Logcatの出力で、ボタンを押したログを見つけました:
MediaSession を作成するコード: