Mediaplayer State Diagram

State Diagram

Playback control of audio/video files and streams is managed as a state machine. The following diagram shows the life cycle and the states of a MediaPlayer object driven by the supported playback control operations. The ovals represent the states a MediaPlayer object may reside in. The arcs represent the playback control operations that drive the object state transition. There are two types of arcs. The arcs with a single arrow head represent synchronous method calls, while those with a double arrow head represent asynchronous method calls.

From this state diagram, one can see that a MediaPlayer object has the following states:

  • When a MediaPlayer object is just created using new or after reset() is called, it is in the Idle state; and afterrelease() is called, it is in the End state. Between these two states is the life cycle of the MediaPlayer object.
    • There is a subtle but important difference between a newly constructed MediaPlayer object and the MediaPlayer object after reset() is called. It is a programming error to invoke methods such as getCurrentPosition(),getDuration()getVideoHeight()getVideoWidth()setAudioStreamType(int)setLooping(boolean),setVolume(float,float)pause()start()stop()seekTo(int)prepare() or prepareAsync() in theIdle state for both cases. If any of these methods is called right after a MediaPlayer object is constructed, the user supplied callback method OnErrorListener.onError() won't be called by the internal player engine and the object state remains unchanged; but if these methods are called right after reset(), the user supplied callback method OnErrorListener.onError() will be invoked by the internal player engine and the object will be transfered to the Error state.
    • It is also recommended that once a MediaPlayer object is no longer being used, call release() immediately so that resources used by the internal player engine associated with the MediaPlayer object can be released immediately. Resource may include singleton resources such as hardware acceleration components and failure to call release() may cause subsequent instances of MediaPlayer objects to fallback to software implementations or fail altogether. Once the MediaPlayer object is in the End state, it can no longer be used and there is no way to bring it back to any other state.
    • Furthermore, the MediaPlayer objects created using new is in the Idle state, while those created with one of the overloaded convenient create methods are NOT in the Idle state. In fact, the objects are in the Prepared state if the creation using create method is successful.
  • In general, some playback control operation may fail due to various reasons, such as unsupported audio/video format, poorly interleaved audio/video, resolution too high, streaming timeout, and the like. Thus, error reporting and recovery is an important concern under these circumstances. Sometimes, due to programming errors, invoking a playback control operation in an invalid state may also occur. Under all these error conditions, the internal player engine invokes a user supplied OnErrorListener.onError() method if an OnErrorListener has been registered beforehand via setOnErrorListener(android.media.MediaPlayer.OnErrorListener).
    • It is important to note that once an error occurs, the MediaPlayer object enters the Error state (except as noted above), even if an error listener has not been registered by the application.
    • In order to reuse a MediaPlayer object that is in the Error state and recover from the error, reset() can be called to restore the object to its Idle state.
    • It is good programming practice to have your application register a OnErrorListener to look out for error notifications from the internal player engine.
    • IllegalStateException is thrown to prevent programming errors such as calling prepare()prepareAsync(), or one of the overloaded setDataSource methods in an invalid state.
  • Calling setDataSource(java.io.FileDescriptor), or setDataSource(java.lang.String), orsetDataSource(android.content.Context,android.net.Uri), orsetDataSource(java.io.FileDescriptor,long,long) transfers a MediaPlayer object in the Idle state to theInitialized state.
    • An IllegalStateException is thrown if setDataSource() is called in any other state.
    • It is good programming practice to always look out for IllegalArgumentException and IOException that may be thrown from the overloaded setDataSource methods.
  • A MediaPlayer object must first enter the Prepared state before playback can be started.
    • There are two ways (synchronous vs. asynchronous) that the Prepared state can be reached: either a call toprepare() (synchronous) which transfers the object to the Prepared state once the method call returns, or a call to prepareAsync() (asynchronous) which first transfers the object to the Preparing state after the call returns (which occurs almost right way) while the internal player engine continues working on the rest of preparation work until the preparation work completes. When the preparation completes or when prepare() call returns, the internal player engine then calls a user supplied callback method, onPrepared() of the OnPreparedListener interface, if an OnPreparedListener is registered beforehand viasetOnPreparedListener(android.media.MediaPlayer.OnPreparedListener).
    • It is important to note that the Preparing state is a transient state, and the behavior of calling any method with side effect while a MediaPlayer object is in the Preparing state is undefined.
    • An IllegalStateException is thrown if prepare() or prepareAsync() is called in any other state.
    • While in the Prepared state, properties such as audio/sound volume, screenOnWhilePlaying, looping can be adjusted by invoking the corresponding set methods.
  • To start the playback, start() must be called. After start() returns successfully, the MediaPlayer object is in theStarted state. isPlaying() can be called to test whether the MediaPlayer object is in the Started state.
    • While in the Started state, the internal player engine calls a user supplied OnBufferingUpdateListener.onBufferingUpdate() callback method if a OnBufferingUpdateListener has been registered beforehand viasetOnBufferingUpdateListener(android.media.MediaPlayer.OnBufferingUpdateListener). This callback allows applications to keep track of the buffering status while streaming audio/video.
    • Calling start() has not effect on a MediaPlayer object that is already in the Started state.
  • Playback can be paused and stopped, and the current playback position can be adjusted. Playback can be paused viapause(). When the call to pause() returns, the MediaPlayer object enters the Paused state. Note that the transition from the Started state to the Paused state and vice versa happens asynchronously in the player engine. It may take some time before the state is updated in calls to isPlaying(), and it can be a number of seconds in the case of streamed content.
    • Calling start() to resume playback for a paused MediaPlayer object, and the resumed playback position is the same as where it was paused. When the call to start() returns, the paused MediaPlayer object goes back to theStarted state.
    • Calling pause() has no effect on a MediaPlayer object that is already in the Paused state.
  • Calling stop() stops playback and causes a MediaPlayer in the StartedPausedPrepared or PlaybackCompleted state to enter the Stopped state.
    • Once in the Stopped state, playback cannot be started until prepare() or prepareAsync() are called to set the MediaPlayer object to the Prepared state again.
    • Calling stop() has no effect on a MediaPlayer object that is already in the Stopped state.
  • The playback position can be adjusted with a call to seekTo(int).
    • Although the asynchronuous seekTo(int) call returns right way, the actual seek operation may take a while to finish, especially for audio/video being streamed. When the actual seek operation completes, the internal player engine calls a user supplied OnSeekComplete.onSeekComplete() if an OnSeekCompleteListener has been registered beforehand viasetOnSeekCompleteListener(android.media.MediaPlayer.OnSeekCompleteListener).
    • Please note that seekTo(int) can also be called in the other states, such as PreparedPaused andPlaybackCompleted state.
    • Furthermore, the actual current playback position can be retrieved with a call to getCurrentPosition(), which is helpful for applications such as a Music player that need to keep track of the playback progress.
  • When the playback reaches the end of stream, the playback completes.
    • If the looping mode was being set to truewith setLooping(boolean), the MediaPlayer object shall remain in theStarted state.
    • If the looping mode was set to false , the player engine calls a user supplied callback method, OnCompletion.onCompletion(), if a OnCompletionListener is registered beforehand viasetOnCompletionListener(android.media.MediaPlayer.OnCompletionListener). The invoke of the callback signals that the object is now in the PlaybackCompleted state.
    • While in the PlaybackCompleted state, calling start() can restart the playback from the beginning of the audio/video source.
Line 18889: 12-19 17:29:14.603763 1584 4506 I MediaFocusControl: requestAudioFocus() from uid/pid 10165/2191 AA=USAGE_NOTIFICATION/CONTENT_TYPE_SONIFICATION clientId=android.media.AudioManager@e9acd21 callingPack=com.android.systemui req=3 flags=0x0 sdk=35 Line 19135: 12-19 17:29:14.781065 2191 2191 D SysUI(251215)_MediaCarouselController: isLockedAndHidden: keyguardState:GONE , allowMediaPlayerOnLockScreen:true , mediaHideWhenSleep:false Line 19137: 12-19 17:29:14.781239 2191 2191 D SysUI(251215)_MediaCarouselController: isLockedAndHidden: keyguardState:GONE , allowMediaPlayerOnLockScreen:true , mediaHideWhenSleep:false Line 19258: 12-19 17:29:15.129601 2191 2191 D SysUI(251215)_MediaDataManager: onNotificationAdded, key: 0|com.transsion.screenrecorder|4277|null|10205, useQsMediaPlayer: true, isMediaNotification: false Line 19431: 12-19 17:29:15.181326 1246 20248 D AudioTrack: INSP: type=audio,case=1,set=0xe9ec6060,stream_type=5,sample_rate=44100,format=0x1,channel_mask=0x3,frame_count=22560,flags=0x0,notification_frames=0,session_id=553,transfer_type=0,uid=10165,pid=2191 Line 19432: 12-19 17:29:15.181373 1246 20248 D AudioTrack: INSP: type=audio,case=1,attributes=1,content_type=4,usage=5,source=-1,flags=0x800 Line 19460: 12-19 17:29:15.196255 1246 20248 D AudioTrack: createTrack_l(79): 0xe9ec6060, mCblk = 0xeef08000, mLatency = 553, mAfLatency = 42, frameCount = 22560, mSampleRate = 44100, mFlags = 0, mReqFrameCount = 22560, mNotificationFramesAct = 7520 Line 19461: 12-19 17:29:15.196841 1246 20248 D AudioTrack: setVolume(79): 0xe9ec6060, left = 0.300000, right = 0.300000 Line 19469: 12-19 17:29:15.198810 1246 20248 D AudioTrack: setVolume(79): 0xe9ec6060, left = 0.300000, right = 0.300000 Line 19470: 12-19 17:29:15.198949 1246 20248 D AudioTrack: start(79): 0xe9ec6060, prior state:STATE_STOPPED Line 19488: 12-19 17:29:15.208270 982 2778 D AudioPolicyManagerCustomImpl: hifiAudio_startOutputSamplerate() +output = 13 portId = 79 samplerate = 44100 HifiState = 1 stream 5, session 553 Line 19502: 12-19 17:29:15.212202 982 1426 D StreamHalAidl: setParameters: parameters: "NoAudioTrack=0" Line 19503: 12-19 17:29:15.212222 982 1426 D StreamHalAidl: setParameters: parameters: NoAudioTrack=0 Line 19586: 12-19 17:29:15.297763 903 1410 D AudioALSAHardwareResourceManager: +startOutputDevice(), new_devices = 0x2, mOutputDevices = 0x0, mStartOutputDevicesCount = 0 SampleRate = 48000 Line 19586: 12-19 17:29:15.297763 903 1410 D AudioALSAHardwareResourceManager: +startOutputDevice(), new_devices = 0x2, mOutputDevices = 0x0, mStartOutputDevicesCount = 0 SampleRate = 48000 Line 19668: 12-19 17:29:15.545221 1246 20248 D AudioTrack: stop(79): 0xe9ec6060, prior state:STATE_ACTIVE Line 19671: 12-19 17:29:15.546159 1246 20248 D AudioTrackShared: this(0xe9fc2710), mCblk(0xeef08000), front(12230), mIsOut 1, interrupt() FUTEX_WAKE Line 19673: 12-19 17:29:15.546519 1246 20248 D AudioTrack: stop(79): 0xe9ec6060 stop done Line 19735: 12-19 17:29:15.768251 2191 2191 D SysUI(251215)_MediaDataManager: onNotificationAdded, key: 0|com.transsion.screenrecorder|4277|null|10205, useQsMediaPlayer: true, isMediaNotification: false Line 19886: 12-19 17:29:16.015818 1246 20244 D NuPlayer: reached audio EOS Line 19887: 12-19 17:29:16.016569 1246 20248 D AudioTrack: pause(79): 0xe9ec6060, prior state:STATE_STOPPED Line 19906: 12-19 17:29:16.023784 1584 2551 I MediaFocusControl: abandonAudioFocus() from uid/pid 10165/2191 clientId=android.media.AudioManager@e9acd21 Line 19907: 12-19 17:29:16.024516 2191 20242 V MediaPlayer: resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false Line 19908: 12-19 17:29:16.024611 2191 20242 V MediaPlayer: cleanDrmObj: mDrmObj=null mDrmSessionId=null Line 19909: 12-19 17:29:16.024629 2191 20242 D MediaPlayer: _release native called Line 19911: 12-19 17:29:16.024937 1246 2373 D NuPlayerDriver: reset(0xea4c0f10) at state 6 Line 19915: 12-19 17:29:16.025580 1246 20244 D NuPlayer: performDecoderFlush audio=2, video=2 Line 19916: 12-19 17:29:16.025616 1246 20244 D NuPlayer: [audio] flushDecoder needShutdown=1 Line 19917: 12-19 17:29:16.025971 1246 20248 D NuPlayerRenderer: flushing audio Line 19918: 12-19 17:29:16.026027 1246 20248 D AudioTrack: pause(79): 0xe9ec6060, prior state:STATE_STOPPED Line 19939: 12-19 17:29:16.030051 982 1293 D AudioPolicyManagerCustomImpl: hifiAudio_stopOutputSamplerate() -output = 13, porId = 79, samplerate = 44100 HifiState = 1, stream 5, session 553 Line 19944: 12-19 17:29:16.031918 982 1426 D StreamHalAidl: setParameters: parameters: "NoAudioTrack=1" Line 19945: 12-19 17:29:16.031964 982 1426 D StreamHalAidl: setParameters: parameters: NoAudioTrack=1 Line 19952: 12-19 17:29:16.033880 1246 20248 D AudioTrack: flush(79): 0xe9ec6060, prior state:STATE_STOPPED Line 19953: 12-19 17:29:16.035809 1246 20248 D AudioTrack: stop(79): 0xe9ec6060, prior state:STATE_FLUSHED Line 19954: 12-19 17:29:16.035991 1246 20244 D NuPlayer: renderer audio flush completed. Line 19957: 12-19 17:29:16.037173 1246 20244 D NuPlayer: decoder audio flush completed Line 19958: 12-19 17:29:16.037220 1246 20244 D NuPlayer: initiating audio decoder shutdown Line 19968: 12-19 17:29:16.041580 1246 20244 D NuPlayer: audio shutdown completed Line 19971: 12-19 17:29:16.045674 1246 20244 D NuPlayerDriver: notifyResetComplete(0xea4c0f10) Line 19975: 12-19 17:29:16.047627 1246 1394 D AudioTrack: ~AudioTrack(79): 0xe9ec6060 Line 19975: 12-19 17:29:16.047627 1246 1394 D AudioTrack: ~AudioTrack(79): 0xe9ec6060 Line 19976: 12-19 17:29:16.047697 2191 20242 D MediaPlayer: _release native finished Line 19977: 12-19 17:29:16.047974 1246 1394 D AudioTrack: stop(79): 0xe9ec6060, prior state:STATE_FLUSHED Line 20146: 12-19 17:29:16.781338 2191 2191 D SysUI(251215)_MediaDataManager: onNotificationAdded, key: 0|com.transsion.screenrecorder|4277|null|10205, useQsMediaPlayer: true, isMediaNotification: false Line 20297: 12-19 17:29:16.968567 903 1410 D AudioALSAHardwareResourceManager: +stopOutputDevice(), mOutputDevices = 0x2, mStartOutputDevicesCount = 1 Line 20297: 12-19 17:29:16.968567 903 1410 D AudioALSAHardwareResourceManager: +stopOutputDevice(), mOutputDevices = 0x2, mStartOutputDevicesCount = 1 Line 20478: 12-19 17:29:17.794911 2191 2191 D SysUI(251215)_MediaDataManager: onNotificationAdded, key: 0|com.transsion.screenrecorder|4277|null|10205, useQsMediaPlayer: true, isMediaNotification: false Line 20782: 12-19 17:29:18.808176 2191 2191 D SysUI(251215)_MediaDataManager: onNotificationAdded, key: 0|com.transsion.screenrecorder|4277|null|10205, useQsMediaPlayer: true, isMediaNotification: false Line 21348: 12-19 17:29:19.353872 1246 2373 D NuPlayerDriver: NuPlayerDriver(0xea4c38f0) created, clientPid(2191) Line 21348: 12-19 17:29:19.353872 1246 2373 D NuPlayerDriver: NuPlayerDriver(0xea4c38f0) created, clientPid(2191) Line 21353: 12-19 17:29:19.356739 1246 2373 D NuPlayer: don't find container Line 21358: 12-19 17:29:19.361969 2191 2191 D SysUI(251215)_MediaDataManager: onNotificationAdded, key: 0|com.transsion.smartmessage|0|com.transsion.smartmessage:sms::1|10133, useQsMediaPlayer: true, isMediaNotification: false 该段日志能看出调用了audio的哪个接口吗
最新发布
12-27
12-16 15:53:13.561657 1327 7721 D AudioALSAHardwareResourceManager: +startOutputDevice(), new_devices = 0x2, mOutputDevices = 0x0, mStartOutputDevicesCount = 0 SampleRate = 48000 12-16 15:53:13.561691 1327 7721 D AudioALSAHardwareResourceManager: OpenSpeakerPath(), defined MTK_GENERIC_HAL 12-16 15:53:13.561762 1327 7721 D AudioSmartPaController: +dspOnBoardSpeakerOn(), SampleRate: 48000, MD_type: 0, isI2sInEchoRefEn: 0 12-16 15:53:13.561816 1327 7721 D AudioALSAHardwareResourceManager: notifyOutputDeviceStatusChange(), device = 2, status = 0, sampleRate = 48000, mOpenSpeakerPathCount = 1 12-16 15:53:13.561857 1327 7721 D AudioALSAStreamManager: speakerStatusChangeCb(), status = 0, sampleRate = 48000 12-16 15:53:13.561898 1327 7721 D AudioALSAVoiceWakeUpController: setSpeakerSampleRate(), sampleRate = 48000 12-16 15:53:13.561928 1327 7721 D AudioALSAVoiceWakeUpController: updateSpeakerPlaybackStatus(), isSpeakerPlaying = 1 12-16 15:53:13.561953 1327 7721 D AudioALSAVoiceWakeUpController: +setBargeInEnable(), enable = 1 12-16 15:53:13.561989 1327 7721 D AudioALSAVoiceWakeUpController: setBargeInEnable(), format = 0, channels = 2, rate = 48000, period_size = 480, period_count = 4 12-16 15:53:13.562121 1327 7721 D AudioALSAVoiceWakeUpController: setBargeInEnable(), Interconn VOW_BARGE_IN_ECHO_DSP_SMARTPA 12-16 15:53:13.562288 1327 7721 D AudioALSADeviceConfigManager: ApplyDeviceTurnonSequenceByName() DeviceName = VOW_BARGE_IN_ECHO_DSP_SMARTPA descriptor->DeviceStatusCounte = 0, Ctlsize=8 12-16 15:53:13.564575 1327 7721 D AudioALSADeviceParser: compare pcm success = 34, stringpair = Hostless_SRC_Bargein 12-16 15:53:13.568337 1327 7721 D AudioALSAVoiceWakeUpController: -setBargeInEnable(),mPcmHostlessUl = 0xb400007668c77b70, pcmHostlessUlRet = 0, mPcmHostlessDl = 0xb400007668c7b950, pcmHostlessDlRet = 0 12-16 15:53:13.568386 1327 7721 D AudioALSADeviceParser: compare pcm success = 12, stringpair = Capture_2 12-16 15:53:13.570735 1327 7721 D AudioALSAVoiceWakeUpController: setBargeInEnable(), mBargeInPcm = 0xb400007668c76cd0, pcmUlRet = 0 12-16 15:53:13.580806 1327 7721 D AudioALSAVoiceWakeUpController: setBargeInEnable(), VOW_BARGEIN_ON set, irq = 15, ret = 0 12-16 15:53:13.582197 1327 7721 D AudioALSAVoiceWakeUpController: -setBargeInEnable(), mBargeInPcm = 0xb400007668c76cd0, mBargeInEnable = 1 12-16 15:53:13.582287 1327 7721 D AudioALSAPlaybackHandlerNormal: -open() 12-16 15:53:13.582433 1327 7721 D AudioALSAPlaybackHandlerNormal: setScreenState(), flag = 0x2, mode = 1, sample_rate(source/target) = 48000/48000, buffer_size(source/target) = 8192/16384, device_support_hifi = 0 12-16 15:53:13.582492 1327 7721 D AudioALSAPlaybackHandlerNormal: setScreenState(), flag = 2, rate = 1024, mInterrupt = 0.021333, mode = 1, sample_rate(target) = 48000, buffer_size = 8192, channel = 2, format = 4, reduceInterruptSize = 1024 12-16 15:53:13.584362 1327 7721 E AudioALSAPlaybackHandlerBase: -getHardwareBufferInfo(), pcm_get_htimestamp fail, ret = -1, pcm_get_error = flag = 0x2 12-16 15:53:13.584958 1404 1997 I AF::Track: processMuteEvent_l(160): processed mute state for port ID 219 from 0 to 16 12-16 15:53:13.585118 1404 1997 D AudioMixer: setParameter(TRACK(160), MAIN_BUFFER, 0xb4000070e071f220) 12-16 15:53:13.585130 1404 1997 D AudioMixer: setParameter(TRACK(160), MAIN_BUFFER_TYPE, 1) 12-16 15:53:13.585500 1949 2553 I AS.PlaybackActivityMon: dispatchPlayback size:20 to client size:4 12-16 15:53:13.588076 2784 26835 I MobileInputLog: onDataActivity: subId=2 direction=2 12-16 15:53:13.589617 2784 2784 V TrBaseVerboseMobileViewLogger: Binder[subId=2, viewId=708be1a] received new data activity icon: resId=2131234331 12-16 15:53:13.589877 11828 11828 D AI_ELLA_: onPlaybackConfigChanged in main thread 12-16 15:53:13.594941 1404 1997 D AudioFlinger_Threads: mixer(0xb4000072f2b8e7b0) throttle begin: ret(8192) deltaMs(2) requires sleep 8 ms 12-16 15:53:13.608661 1404 1997 D AudioFlinger_Threads: mixer(0xb4000072f2b8e7b0) throttle end: throttle time(8) 12-16 15:53:13.633408 1337 1883 I hwcomposer: [DRMDEV] sid:0x10000 job:73899 ovlp:0 pf_idx:72955 hrt_idx:19394 mode:2 12-16 15:53:13.654064 4005 4005 W OrientationEventListener: Original (X,Y,Z) = (2.3779502,-3.3330002,-8.97105), calc result mOrientation = -1 12-16 15:53:13.773507 4005 4005 W OrientationEventListener: Original (X,Y,Z) = (2.4019501,-3.3349502,-8.985001), calc result mOrientation = -1 12-16 15:53:13.773685 4005 4005 W OrientationEventListener: Original (X,Y,Z) = (2.4160502,-3.357,-8.937), calc result mOrientation = -1 12-16 15:53:13.783580 1661 25608 D CCodecBufferChannel: [c2.android.vorbis.decoder#152] input EOS 12-16 15:53:13.785637 1661 25608 D CCodecBufferChannel: [c2.android.vorbis.decoder#152] buffers after EOS ignored (0 us) 12-16 15:53:13.786621 1661 25606 D AudioTrack: stop(219): 0xb4000078e9813040, prior state:STATE_ACTIVE 12-16 15:53:13.788053 1404 1512 D TranFlinger: checkIsFuncEnabled isSupport: 1 funcKey:FUNCTION_FADEOUTIN 12-16 15:53:13.789335 1404 1512 D TranFlinger: checkIsFuncSupportPkg isSupport: 0 funcKey:FUNCTION_FADEOUTIN pkg:/system/bin/mediaserver 12-16 15:53:13.790017 1661 25606 D AudioTrackShared: this(0xb400007769813b90), mCblk(0x799a046000), front(10348), mIsOut 1, interrupt() FUTEX_WAKE 12-16 15:53:13.791107 1661 25606 D AudioTrack: stop(219): 0xb4000078e9813040 stop done 12-16 15:53:13.881673 4005 4005 W OrientationEventListener: Original (X,Y,Z) = (2.4019501,-3.3330002,-8.982), calc result mOrientation = -1 12-16 15:53:13.981005 4005 4005 W OrientationEventListener: Original (X,Y,Z) = (2.4019501,-3.4000502,-8.96595), calc result mOrientation = -1 12-16 15:53:13.981256 4005 4005 W OrientationEventListener: Original (X,Y,Z) = (2.3779502,-3.3349502,-8.962951), calc result mOrientation = -1 12-16 15:53:14.081410 4005 4005 W OrientationEventListener: Original (X,Y,Z) = (2.388,-3.3379502,-8.985001), calc result mOrientation = -1 12-16 15:53:14.090291 1949 3435 D TranNetworkManagementServiceMultiLinkImpl: linkTurb destorySocketByUid uid :10083 12-16 15:53:14.134317 4005 4005 W OrientationEventListener: Original (X,Y,Z) = (2.38995,-3.3349502,-8.953951), calc result mOrientation = -1 12-16 15:53:14.134505 4005 4005 W OrientationEventListener: Original (X,Y,Z) = (2.36805,-3.3229501,-8.99205), calc result mOrientation = -1 12-16 15:53:14.250147 1404 1997 D MtkAudioResamplerDyn: MtkAudioResamplerDyn InBuffer::reset!! 12-16 15:53:14.253150 4005 4005 W OrientationEventListener: Original (X,Y,Z) = (2.35395,-3.321,-8.961), calc result mOrientation = -1 12-16 15:53:14.273798 1327 10847 D AudioALSAStreamOut: +setParameters(): flag 2, MixerThreadSleep= 12-16 15:53:14.274127 1327 10847 W AudioALSAStreamOut: setParameters(), still have param.size() = 1, remain param = "MixerThreadSleep=" 12-16 15:53:14.286283 1398 1398 D Vibrator: Vibrator off 12-16 15:53:14.287317 1398 1398 D Vibrator: tran find single lra 12-16 15:53:14.294373 1398 1398 D Vibrator: Vibrator using LED trigger 12-16 15:53:14.297384 1327 10847 D AudioALSAStreamOut: +setParameters(): flag 2, MixerThreadSleep= 12-16 15:53:14.297684 1327 10847 W AudioALSAStreamOut: setParameters(), still have param.size() = 1, remain param = "MixerThreadSleep=" 12-16 15:53:14.299789 1661 25599 D NuPlayer: reached audio EOS 12-16 15:53:14.300626 1661 25606 D AudioTrack: pause(219): 0xb4000078e9813040, prior state:STATE_STOPPED 12-16 15:53:14.301450 1404 1512 D TranFlinger: checkIsFuncEnabled isSupport: 1 funcKey:FUNCTION_ADDPERFORMANCE 12-16 15:53:14.303097 1661 25606 D AudioSystem: +setParameters(): remove_clientTid=25606 12-16 15:53:14.304599 1404 1512 I AudioFlinger: setParameters: filtered keyvalue remove_clientTid=25606 12-16 15:53:14.305106 1404 1512 I AudioFlinger: +mAudioHwDevs(primary)->setParameters(): remove_clientTid=25606 12-16 15:53:14.306087 1327 10847 D AudioALSAHardware: +setParameters(): remove_clientTid=25606 12-16 15:53:14.306366 1327 10847 D AudioALSAHardware: -setParameters(): remove_clientTid=25606 12-16 15:53:14.306613 1404 1512 I AudioFlinger: -mAudioHwDevs(primary)->setParameters(): remove_clientTid=25606 12-16 15:53:14.306664 1404 1512 I AudioFlinger: +mAudioHwDevs(bluetooth)->setParameters(): remove_clientTid=25606 12-16 15:53:14.307244 1404 1512 I AudioFlinger: -mAudioHwDevs(bluetooth)->setParameters(): remove_clientTid=25606 12-16 15:53:14.307596 1404 1512 I AudioFlinger: +mAudioHwDevs(usb)->setParameters(): remove_clientTid=25606 12-16 15:53:14.308595 1404 1512 I AudioFlinger: -mAudioHwDevs(usb)->setParameters(): remove_clientTid=25606 12-16 15:53:14.308950 1404 1512 I AudioFlinger: +mAudioHwDevs(r_submix)->setParameters(): remove_clientTid=25606 12-16 15:53:14.309828 1404 1512 I AudioFlinger: -mAudioHwDevs(r_submix)->setParameters(): remove_clientTid=25606 12-16 15:53:14.310126 1404 1512 E TranFlinger: setPareters is is 0 12-16 15:53:14.312405 1949 2314 I MediaFocusControl: abandonAudioFocus() from uid/pid 10152/2784 clientId=android.media.AudioManager@72ef850 12-16 15:53:14.313155 1949 4624 I AS.PlaybackActivityMon: dispatchPlayback size:20 to client size:4 12-16 15:53:14.317322 2784 25597 V MediaPlayer: resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false 12-16 15:53:14.317379 2784 25597 V MediaPlayer: cleanDrmObj: mDrmObj=null mDrmSessionId=null 12-16 15:53:14.317403 2784 25597 D MediaPlayer: _release native called 12-16 15:53:14.317952 1949 2314 I AS.PlaybackActivityMon: dispatchPlayback size:19 to client size:4 12-16 15:53:14.318525 1404 1997 D TranFlinger_Threads: removeTrackCount: remove lock trackId 160 12-16 15:53:14.318564 1404 1997 D TranFlinger_Threads: removeTrackCount: mNonMusicActiveTrack remove: 1 12-16 15:53:14.318578 1404 1997 D TranFlinger_Threads: removeTrackCount: unlock 12-16 15:53:14.318785 1404 1652 D AudioPolicyManagerCustomImpl: hifiAudio_stopOutputSamplerate() -output = 13, porId = 219, samplerate = 44100 HifiState = 1, stream 5, session 1169 分析这段日志是什么意思
12-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值