国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

隨州網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)與制作教程

隨州網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì)與制作教程,注冊(cè)公司網(wǎng)站源碼,wordpress網(wǎng)站好做排名嗎Android adb shell dumpsys audio 信息查看分析詳解 一、前言 Android 如果要分析當(dāng)前設(shè)備的聲音通道相關(guān)日志, 僅僅看AudioService的日志是看不到啥日志的,但是看整個(gè)audio關(guān)鍵字的日志又太多太亂了, 所以可以看一下系統(tǒng)提供的一個(gè)調(diào)試指令…

Android adb shell dumpsys audio 信息查看分析詳解

一、前言

Android 如果要分析當(dāng)前設(shè)備的聲音通道相關(guān)日志,
僅僅看AudioService的日志是看不到啥日志的,但是看整個(gè)audio關(guān)鍵字的日志又太多太亂了,
所以可以看一下系統(tǒng)提供的一個(gè)調(diào)試指令dumpsys audio 返回的信息進(jìn)行定位分析,
里面主要包含了AudioService啟動(dòng)時(shí)間,當(dāng)前設(shè)備的音頻流指向,音頻流的聲音大小,音頻外設(shè)的連接情況,音頻播放記錄,音頻外設(shè)連接斷開記錄等等信息。

不同的Android 系統(tǒng)使用 dumpsys audio 命令返回的日志信息可能會(huì)有差異,
因?yàn)榇蛴》祷氐男畔⒕褪茿udioService.java里面打印顯示的,
本文的示例講解是以mtk方案的Android14日志信息進(jìn)行講解。
網(wǎng)上基本沒(méi)有對(duì)dumpsys audio 日志信息進(jìn)行分析的,有興趣的可以收藏查看。

二、分析

1、簡(jiǎn)單示例和主要內(nèi)容

本示例日志是設(shè)備連接藍(lán)牙耳機(jī)后的dumpsys audio情況日志信息:

# dumpsys audio
[18:57:20]Events log: audio services lifecycle
[18:57:20]11-22 18:54:07:681 AudioService() //(1)AudioService 啟動(dòng)時(shí)間,大概可以推測(cè)出開機(jī)時(shí)間[18:57:20]MediaFocusControl dump time: 6:57:22 PM //(2)執(zhí)行dumpsys audio的時(shí)間//(3)dumpsys audio最重要的內(nèi)容,設(shè)備支持聲音流情況
[18:57:20]Stream volumes (device: index)
[18:57:20]- STREAM_VOICE_CALL (aliased to: STREAM_MUSIC):
。。。
[18:57:20]- STREAM_SYSTEM (aliased to: STREAM_MUSIC):
。。。
[18:57:20]- STREAM_RING (aliased to: STREAM_MUSIC):
。。
//(4)基本是音頻播放的情況,上面其他聲音通道都是注釋了以這個(gè)為標(biāo)準(zhǔn)
[18:57:20]- STREAM_MUSIC: 
[18:57:20]   Muted: false
[18:57:20]   Muted Internally: false
[18:57:20]   Min: 0  //聲音范圍
[18:57:20]   Max: 15
[18:57:20]   streamVolume:7 //當(dāng)前聲音大小
[18:57:20]   Current: 2 (speaker): 7, 80 (bt_a2dp): 7, 400 (hdmi): 7, 40000000 (default): 7
[18:57:20]   Devices: bt_a2dp(80) //當(dāng)前聲音通道,藍(lán)牙
[18:57:20]   Volume Group: music
[18:57:20]
[18:57:20]- STREAM_ALARM (aliased to: STREAM_MUSIC):
[18:57:20]   Muted: false
[18:57:20]   Muted Internally: false
[18:57:20]   Min: 1
[18:57:20]   Max: 7
[18:57:20]   streamVolume:4
[18:57:20]   Current: 2 (speaker): 4, 80 (bt_a2dp): 4, 400 (hdmi): 4, 40000000 (default): 4
[18:57:20]   Devices: speaker(2), bt_a2dp(80)
[18:57:20]   Volume Group: alarm//其他聲音通道比較少實(shí)用,比如鈴聲,通知等情況
[18:57:20]- STREAM_NOTIFICATION (aliased to: STREAM_MUSIC):
[18:57:20]- STREAM_BLUETOOTH_SCO:
[18:57:20]- STREAM_SYSTEM_ENFORCED (aliased to: STREAM_MUSIC):
[18:57:20]- STREAM_DTMF (aliased to: STREAM_MUSIC):
[18:57:20]- STREAM_TTS (aliased to: STREAM_MUSIC):
[18:57:20]- STREAM_ACCESSIBILITY (aliased to: STREAM_MUSIC):
[18:57:20]- STREAM_ASSISTANT (aliased to: STREAM_MUSIC):
。。。//Volume Groups 不知道是干啥的,類型也是挺多的。
[18:57:20]Volume Groups (device: index)
[18:57:20]- VOLUME GROUP voice_call:
[18:57:20]   Muted: false
[18:57:20]   Min: 1
[18:57:20]   Max: 7
[18:57:20]   Current: 2 (speaker): 4, 80 (bt_a2dp): 7, 40000000 (default): 4
[18:57:20]   Devices: bt_a2dp
[18:57:20]   Streams: STREAM_VOICE_CALL [18:57:20]- VOLUME GROUP system:
[18:57:20]   Muted: false
[18:57:20]   Min: 0
[18:57:20]   Max: 100
[18:57:20]   Current: 2 (speaker): 47, 80 (bt_a2dp): 7, 40000000 (default): 47
[18:57:20]   Devices: bt_a2dp
[18:57:20]   Streams: STREAM_SYSTEM [18:57:20]- VOLUME GROUP ring:
[18:57:20]- VOLUME GROUP music:
[18:57:20]- VOLUME GROUP alarm:
[18:57:20]- VOLUME GROUP alarm:
[18:57:20]- VOLUME GROUP bluetooth_sco:
[18:57:20]- VOLUME GROUP enforced_audible:
[18:57:20]- VOLUME GROUP dtmf:
[18:57:20]- VOLUME GROUP accessibility:
[18:57:20]- VOLUME GROUP assistant:
[18:57:20]- VOLUME GROUP AUDIO_STREAM_REROUTING:
[18:57:20]- VOLUME GROUP AUDIO_STREAM_PATCH:VOLUME GROUP類型的 Streams屬性值都是指向上面的Stream volumes類型的。[18:57:20]Audio routes:
[18:57:20]  mMainType=0x0
//(5)當(dāng)前連接藍(lán)牙的設(shè)備名稱,如果未連接藍(lán)牙為null
[18:57:20]  mBluetoothName=Xiaodu Portable Speaker  //(6)音頻播放情況日志
[19:00:32]Events log: playback activity as reported through PlayerBase
//開機(jī)鈴聲
[19:00:32]11-22 18:54:09:789 new player piid:71 uid/pid:1000/745 type:android.media.SoundPool attr:AudioAttributes: usage=USAGE_ASSISTANCE_SONIFICATION content=CONTENT_TYPE_SONIFICATION flags=0x800 tags= bundle=null session:0
[19:00:33]11-22 18:54:10:837 new player piid:79 uid/pid:1000/1069 type:android.media.SoundPool attr:AudioAttributes: usage=USAGE_MEDIA content=CONTENT_TYPE_UNKNOWN flags=0x800 tags= bundle=null session:0。。。//音頻文件播放+停止+播放+停止操作的日志
[19:00:33]11-22 18:58:37:956 player piid:103 event:started
[19:00:33]11-22 18:58:38:076 player piid:103 format update:FormatInfo{isSpatialized=false, channelMask=0x3, sampleRate=44100}
[19:00:33]11-22 18:58:38:175 player piid:103 event:device updated deviceId:5
[19:00:33]11-22 18:58:38:190 player piid:103 event:device updated deviceId:5
[19:00:33]11-22 18:58:42:920 player piid:103 event:paused
[19:00:33]11-22 19:00:24:155 player piid:103 event:started
[19:00:33]11-22 19:00:24:169 player piid:103 format update:FormatInfo{isSpatialized=false, channelMask=0x3, sampleRate=44100}
[19:00:33]11-22 19:00:24:204 player piid:103 event:device updated deviceId:5
[19:00:33]11-22 19:00:29:492 player piid:103 event:paused//(7)當(dāng)前連接的設(shè)備,這里是連接藍(lán)牙耳機(jī)
[18:57:21]  Connected devices:
[18:57:21]    [DeviceInfo: type:0x80 (bt_a2dp) name:Xiaodu Portable Speaker  addr:48:F3:F3:ED:78:AD codec: 1f000000 sensorUuid: 00000000-0000-0000-4254-48f3f3ed78ad disabled modes: {}]
[18:57:21]//(8)如果是連接的usb有線耳機(jī),另外一份日志拼過(guò)來(lái)的
[15:01:34]  Connected devices:
[15:01:34]    [DeviceInfo: type:0x4000000 (usb_headset) name:USB-Audio - USB Speaker Phone addr:card=4;device=0 codec: 0 sensorUuid: null disabled modes: {}]//(9)連接藍(lán)牙耳機(jī)、有線耳機(jī)等外設(shè)音箱的日志
[18:57:21]Events log: wired/A2DP/hearing aid device connection
。。。
[18:57:21]11-22 18:57:04:640 BT profile service: connecting HEARING_AID profile
[18:57:21]11-22 18:57:04:666 BT profile service: connecting A2DP profile
[18:57:21]11-22 18:57:09:875 msg: onBluetoothActiveDeviceChange  state=2 addr=48:F3:F3:ED:78:AD prof=2 supprNoisy=true src=AudioService
[18:57:21]11-22 18:57:09:885 BT connected: addr=48:F3:F3:ED:78:AD profile=2 state=2 codec=AUDIO_FORMAT_SBC
[18:57:21]11-22 18:57:10:074 A2DP device addr=48:F3:F3:ED:78:AD now available
//上面可以看到藍(lán)牙連接的時(shí)間記錄//(10)聲音通道占用的日志
[18:57:21]Events log: force use (logged before setForceUse() is executed)
[18:57:21]11-22 18:54:07:774 setForceUse(FOR_DOCK, FORCE_DIGITAL_DOCK) due to readDockAudioSettings
。。。
[18:57:21]11-22 18:54:08:521 setForceUse(FOR_VIBRATE_RINGING, FORCE_NONE) due to muteRingerModeStreams() from u/pid:1000/745
。。。
//從最后一行日志看,最后是設(shè)置為藍(lán)牙通道的
[18:57:21]11-22 18:57:09:897 setForceUse(FOR_MEDIA, FORCE_NONE) due to setBluetoothA2dpOn(true) from u/pid:1000/745 src:onSetBtActiveDevice//(11)聲音變化和通道情況
[18:57:21]Events log: volume changes (logged when command received by AudioService)
[18:57:21]11-22 18:57:09:885 VolumeStreamState.muteInternally(stream:STREAM_MUSIC, muted)
[18:57:21]11-22 18:57:10:053 setDeviceVolumeBehavior: dev:bt_a2dp addr:48:F3:F3:ED:78:AD behavior:DEVICE_VOLUME_BEHAVIOR_VARIABLE pack:com.android.bluetooth
[18:57:21]11-22 18:57:10:156 avrcpSupportsAbsoluteVolume addr=48:F3:F3:ED:78:AD support=false
[18:57:21]11-22 18:57:10:323 VolumeStreamState.muteInternally(stream:STREAM_MUSIC, unmuted)
//從上面日志看是藍(lán)牙聲音通道,STREAM_MUSIC 流//(12)AudioSystemAdapter 不清楚是啥日志
[18:57:21]AudioSystemAdapter:
[18:57:21] last cache clear time: 11-22 18:57:10:110
[18:57:21] mDevicesForAttrCache:
[18:57:21]        AudioAttributes: usage=USAGE_ASSISTANCE_SONIFICATION content=CONTENT_TYPE_UNKNOWN flags=0x800 tags= bundle=null forVolume: true stream: STREAM_SYSTEM(1)
[18:57:21]                AudioDeviceAttributes: role:output type:bt_a2dp addr:48:F3:F3:ED:78:AD name: profiles:[] descriptors:[]
[18:57:21]        AudioAttributes: usage=USAGE_ASSISTANCE_ACCESSIBILITY content=CONTENT_TYPE_UNKNOWN flags=0x800 tags= bundle=null forVolume: true stream: STREAM_ACCESSIBILITY(10)
[18:57:21]                AudioDeviceAttributes: role:output type:bt_a2dp addr:48:F3:F3:ED:78:AD name: profiles:[] descriptors:[]
[18:57:21]        AudioAttributes: usage=USAGE_UNKNOWN content=CONTENT_TYPE_UNKNOWN flags=0x801 tags= bundle=null forVolume: true stream: STREAM_SYSTEM(1)
[18:57:21]                AudioDeviceAttributes: role:output type:speaker addr: name: profiles:[] descriptors:[]
[18:57:21]                AudioDeviceAttributes: role:output type:bt_a2dp addr:48:F3:F3:ED:78:AD name: profiles:[] descriptors:[]
。。。百度查詢到:AudioSystemAdapter可能會(huì)包含如下功能:
設(shè)備檢測(cè):檢查設(shè)備是否支持特定音頻特性(如藍(lán)牙、耳機(jī)插孔等)。
音頻路徑管理:動(dòng)態(tài)選擇音頻流的最佳路徑,如揚(yáng)聲器、耳機(jī)或藍(lán)牙設(shè)備。
音效處理:應(yīng)用特定的音效效果,如均衡器設(shè)置或環(huán)繞聲模式。
但是從上面日志看不出這些信息,可能信息比較隱蔽。

從上面的示例的主要日志信息,可以看到dumpsys主要包含當(dāng)前音頻流和外設(shè)的信息。

2、dumpsys audio日志的主要格式內(nèi)容

# dumpsys audio //(1)執(zhí)行命令
[18:57:20]Events log: audio services lifecycle//(2)AudioService 啟動(dòng)時(shí)間,大概可以推測(cè)出開機(jī)時(shí)間
[18:57:20]11-22 18:54:07:681 AudioService() //(3)dumpsys audio最重要的內(nèi)容,設(shè)備支持聲音流情況,正常看STREAM_MUSIC
[18:57:20]Stream volumes (device: index)
[18:57:20]- STREAM_MUSIC: 
[18:57:20]   Muted: false
[18:57:20]   Muted Internally: false
[18:57:20]   Min: 0  //聲音范圍
[18:57:20]   Max: 15
[18:57:20]   streamVolume:7 //當(dāng)前聲音大小
[18:57:20]   Current: 2 (speaker): 7, 80 (bt_a2dp): 7, 400 (hdmi): 7, 40000000 (default): 7
[18:57:20]   Devices: bt_a2dp(80) //當(dāng)前聲音通道,藍(lán)牙
[18:57:20]   Volume Group: music
[18:57:20]//(4)音頻播放情況日志
[19:00:32]Events log: playback activity as reported through//(5)音頻外設(shè)連接情況
[18:57:21]  Connected devices://(6)聲音通道占用的日志
[18:57:21]Events log: force use (logged before setForceUse() is executed)//(7)音頻外設(shè)連接斷開日志
[18:57:21]Events log: wired/A2DP/hearing aid device connection//(8)聲音變化和通道情況
[18:57:21]Events log: volume changes (logged when command received by AudioService)//(9)AudioSystemAdapter 音頻管理信息

這里只是根據(jù)一個(gè)實(shí)際的示例日志進(jìn)行的講解,
上面的講解不一定完全正確和全面,僅供參考吧。

三、其他

1、dumpsys audio小結(jié)

dumpsys audio 主要能看到

當(dāng)前設(shè)備音頻流的指向情況,Stream volumes (device: index)
當(dāng)前系統(tǒng)音頻外設(shè)連接情況,Connected devices
聲音通道占用情況記錄,Events log: force use
音頻外設(shè)連接斷開日志,Events log: wired/A2DP/hearing aid device connection

dumpsys audio 最主要就是上面這幾個(gè)聲音相關(guān)信息。
更多的要看具體情況的日志了。

2、dumpsys audio 的源碼

dumpsys audio 返回的打印信息,其實(shí)是Java代碼上打印的,具體源碼如下:

framework/base/services/core/java/com/android/server/audio/AudioService.java

@Overrideprotected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;sLifecycleLogger.dump(pw);if (mAudioHandler != null) {pw.println("\nMessage handler (watch for unhandled messages):");mAudioHandler.dump(new PrintWriterPrinter(pw), "  ");} else {pw.println("\nMessage handler is null");}...pw.println("\nAudio routes:");pw.print("  mMainType=0x"); pw.println(Integer.toHexString(mDeviceBroker.getCurAudioRoutes().mainType));pw.print("  mBluetoothName="); pw.println(mDeviceBroker.getCurAudioRoutes().bluetoothName);...pw.println("\n");pw.println("\nSpatial audio:");pw.println("mHasSpatializerEffect:" + mHasSpatializerEffect + " (effect present)");pw.println("isSpatializerEnabled:" + isSpatializerEnabled() + " (routing dependent)");mSpatializerHelper.dump(pw);sSpatialLogger.dump(pw);mAudioSystem.dump(pw);}

可以看到 dumpsys audio 命令返回的數(shù)據(jù),都是在 AudioService.java 里面返回打印的;
Audio相關(guān)數(shù)據(jù)很多,有興趣的可以自己分析研究看看;
如果想要自定義添加一下額外的打印,可以在源碼里面添加。

3、使用谷歌文件管理器 GoogleFile 播放音頻文件日志:

logct | grep -E "AudioService|AudioTrack"//打開文件管理器后首次播放:
11-23 10:22:26.542   798  1614 I MediaSessionStack: addSession to bottom of stack | record: com.google.android.apps.nbu.files/AudioService (userId=0)
11-23 10:22:26.938   798  1614 I AudioService.FadeOutManager: unfadeOutUid() uid:10074
11-23 10:22:27.148   798   937 I MediaSessionStack: onPlaybackStateChanged - Pushing session to top | record: com.google.android.apps.nbu.files/AudioService (userId=0)
11-23 10:22:27.635   798  1457 I ActivityManager: Background started FGS: Allowed [callingPackage: com.google.android.apps.nbu.files; callingUid: 10074; uidState: TOP ; uidBFSL: [BFSL]; intent: Intent { cmp=com.google.android.apps.nbu.files/.mediaconsumption.audio.service.AudioService (has extras) }; code:PROC_STATE_TOP; tempAllowListReason:<null>; targetSdkVersion:34; callerTargetSdkVersion:34; startForegroundCount:0; bindFromPackage:null: isBindService:true]
11-23 10:22:27.666   798   798 D MediaSessionService: Media button session is changed to com.google.android.apps.nbu.files/AudioService (userId=0)//停止后,再次點(diǎn)擊播放
11-23 10:22:58.294  7108  7259 D AudioTrack: getTimestamp_l(16): device stall time corrected using current time 2328289907108
11-23 10:22:58.339   798  1460 I MediaSessionStack: onPlaybackStateChanged - Pushing session to top | record: com.google.android.apps.nbu.files/AudioService (userId=0)
11-23 10:22:58.344  7108  7259 D AudioTrack: getTimestamp_l(16): stale timestamp time corrected, currentTimeNanos: 2318205649000 < limitNs: 2328189081941 < mStartNs: 2328287081941
11-23 10:22:58.344  7108  7259 W AudioTrack: getTimestamp_l(16): retrograde timestamp time corrected, 2328189081941 < 2328329633858

能看到一點(diǎn)日志,比如AudioTrack播放時(shí)間,但是沒(méi)有太多日志,比如用什么設(shè)備播放、播放音量等等信息。
所以dumpsys audio 還是可以看到當(dāng)時(shí)比較有用的一些日志的。

4、Android 的聲音通道類型

其中streamType定義如下:

STREAM_ALARM:鬧鐘
STREAM_DTMF:雙音多頻,撥號(hào)鍵的聲音
STREAM_MUSIC:音樂(lè)
STREAM_NOTIFICATION:通知
STREAM_RING:鈴聲
STREAM_SYSTEM:系統(tǒng)
STREAM_VOICE_CALL:通話

Android大概支持上面的聲音通道類型,主要使用的是外放的 STREAM_MUSIC。

5、Android–耳機(jī)插拔檢測(cè)(framework篇)

上層到底層的一頓講解

https://blog.csdn.net/qq_42364999/article/details/143256027

http://m.aloenet.com.cn/news/34113.html

相關(guān)文章:

  • 中國(guó)制造網(wǎng) 做網(wǎng)站費(fèi)用網(wǎng)站測(cè)試的內(nèi)容有哪些
  • 自己做的網(wǎng)站百度收索不到友鏈互換平臺(tái)推薦
  • 怎么做送餐網(wǎng)站做網(wǎng)絡(luò)推廣的網(wǎng)站有哪些
  • 門頭溝住房和城鄉(xiāng)建設(shè)委員會(huì)官網(wǎng)站他達(dá)那非片能延時(shí)多久
  • 做的網(wǎng)站侵犯美的商標(biāo)賠償多少錢廣州網(wǎng)絡(luò)推廣公司
  • 網(wǎng)站天天做收錄有效果嗎google中文搜索引擎入口
  • 杭州醫(yī)療器械網(wǎng)站制作app開發(fā)價(jià)格表
  • 合肥網(wǎng)站建設(shè)工作室企業(yè)qq多少錢一年
  • 貴州建設(shè)廳監(jiān)理協(xié)會(huì)網(wǎng)站汕頭網(wǎng)站設(shè)計(jì)公司
  • 怎么做中英文版網(wǎng)站國(guó)內(nèi)搜索引擎排名
  • 網(wǎng)站內(nèi)容及實(shí)現(xiàn)方式qq代刷網(wǎng)站推廣
  • 怎么描述網(wǎng)站主頁(yè)做的好關(guān)鍵詞排名的工具
  • 廣州網(wǎng)站 制作信科便宜制作網(wǎng)頁(yè)的基本步驟
  • 濰坊網(wǎng)站建設(shè)價(jià)格百度云搜索入口
  • wordpress get_the_post_thumbnail石家莊百度搜索優(yōu)化
  • 網(wǎng)站開發(fā)上線流程圖歐美網(wǎng)站建設(shè)公司
  • 英文網(wǎng)站模板源代碼免費(fèi)源碼下載網(wǎng)站
  • 紅色好看的網(wǎng)站免費(fèi)外鏈網(wǎng)站seo發(fā)布
  • 深圳網(wǎng)站建設(shè)軟件開發(fā)公司小程序開發(fā)平臺(tái)有哪些
  • wordpress xmlrpcseo崗位有哪些
  • 建筑人才網(wǎng)招聘官網(wǎng)首頁(yè)如何進(jìn)行網(wǎng)站性能優(yōu)化
  • 最好科技廣州網(wǎng)站建設(shè)seo排名工具提升流量
  • 企業(yè)網(wǎng)站目的成都網(wǎng)站建設(shè)公司排名
  • 網(wǎng)站建設(shè)中模板代碼seo快速排名優(yōu)化方法
  • 給期貨交易類做網(wǎng)站違法嗎濰坊關(guān)鍵詞優(yōu)化排名
  • php網(wǎng)站開發(fā)文檔模板關(guān)鍵詞搜索優(yōu)化公司
  • 常德舉報(bào)網(wǎng)站seo在線工具
  • wordpress部分文字管理員可見(jiàn)百度seo推廣首選帝搜軟件
  • 免費(fèi)商城系統(tǒng)下載福建網(wǎng)絡(luò)seo關(guān)鍵詞優(yōu)化教程
  • 動(dòng)態(tài)網(wǎng)站建設(shè)案例教程下載男生短期培訓(xùn)就業(yè)