Android x86启动后拖动系统音量设置

385 阅读3分钟

基于Android x86 android 9。

1、进入系统音量设置(系统 app)中,拖动媒体音量控制条控件,可以输出声音=》ok

dumpsys audio: 可以看到player有start/stop

12-14 07:10:46:175 player piid:1311 new AudioAttributes:AudioAttributes: usage=USAGE_MEDIA content=CONTENT_TYPE_MUSIC flags=0x80 tags= bundle=null
12-14 07:10:46:175 player piid:1311 has OP_PLAY_AUDIO:true in uid:1000
12-14 07:10:46:182 player piid:1311 state:started
12-14 07:10:46:702 player piid:1311 state:stopped
12-14 07:10:47:237 releasing player piid:1311

2、系统音量设置(系统 app)中,拖动电话音量控制条控件,无法输出声音。

dumpsys audio,player行为不对。

12-14 06:40:35:949 new player piid:167 uid/pid:10022/1445 type:android.media.MediaPlayer attr:AudioAttributes: usage=USAGE_UNKNOWN content=CONTENT_TYPE_UNKNOWN flags=0x0 tags= bundle=null
12-14 06:40:35:952 releasing player piid:167
12-14 06:40:38:041 new player piid:175 uid/pid:1000/1534 type:android.media.MediaPlayer attr:AudioAttributes: usage=USAGE_UNKNOWN content=CONTENT_TYPE_UNKNOWN flags=0x0 tags= bundle=null
12-14 06:40:38:045 releasing player piid:175

3、系统音量设置(系统 app)中,拖动Alarm音量控制条控件,无法输出声音。

dumpsys audio,player行为不对。

12-14 06:47:18:034 new player piid:183 uid/pid:1000/1534 type:android.media.MediaPlayer attr:AudioAttributes: usage=USAGE_UNKNOWN content=CONTENT_TYPE_UNKNOWN flags=0x0 tags= bundle=null
12-14 06:47:18:042 releasing player piid:183
12-14 06:47:18:045 new player piid:191 uid/pid:10022/1445 type:android.media.MediaPlayer attr:AudioAttributes: usage=USAGE_UNKNOWN content=CONTENT_TYPE_UNKNOWN flags=0x0 tags= bundle=null
12-14 06:47:18:048 releasing player piid:191

发现通过设置Default alarm sound后,拖动Call volume音量条和Alarm volume音量条发声正常。

针对NG/OK的情况我们分析下,OK case是选中了Default alarm sound的其中的一个;NG case是None。

130|:/ # ps -A | grep setting                                                  
system        1527  1155 3345636 184480 ep_poll             0 S com.android.settings
logcat -v time | grep 1527
ok:
12-14 07:15:02.468 V/MediaPlayer( 1527): resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
12-14 07:15:02.468 V/MediaPlayer( 1527): cleanDrmObj: mDrmObj=null mDrmSessionId=null
12-14 07:15:02.468 V/MediaPlayer( 1527): resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
12-14 07:15:02.468 V/MediaPlayer( 1527): cleanDrmObj: mDrmObj=null mDrmSessionId=null
12-14 07:15:02.471 D/NuPlayerDriver( 1187): NuPlayerDriver(0xe43fa380) created, clientPid(1527)
12-14 07:15:02.482 D/Ringtone( 1527): Successfully created local player
12-14 07:15:04.470 V/MediaPlayer( 1527): resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
12-14 07:15:04.470 V/MediaPlayer( 1527): cleanDrmObj: mDrmObj=null mDrmSessionId=null
12-14 07:15:04.470 V/MediaPlayer( 1527): resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
12-14 07:15:04.470 V/MediaPlayer( 1527): cleanDrmObj: mDrmObj=null mDrmSessionId=null

ng:
12-14 07:16:00.999 W/MediaPlayer( 1527): Couldn't open content://0@settings/system/alarm_alert_cache: java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)
12-14 07:16:00.999 W/MediaPlayer( 1527): Couldn't open null: java.lang.NullPointerException: uri
12-14 07:16:01.003 E/MediaPlayerNative( 1527): Unable to create media player
12-14 07:16:01.003 V/MediaPlayer( 1527): resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
12-14 07:16:01.003 V/MediaPlayer( 1527): cleanDrmObj: mDrmObj=null mDrmSessionId=null
12-14 07:16:01.004 V/MediaPlayer( 1527): resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
12-14 07:16:01.004 V/MediaPlayer( 1527): cleanDrmObj: mDrmObj=null mDrmSessionId=null
12-14 07:16:01.004 D/Ringtone( 1527): Problem opening; delegating to remote player

所以是player问题导致的。