⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbmusicapsingleplayermodel.cpp

📁 symbian代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	else
		{
		SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLowest,_L("Disconnect: PlayerCtrlNotready.Err->KErrNone"));
		}	
		
	if(KErrNone != err)
		{
		SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("Disconnect(Disconnect) Err:%d"), err);
		User::Leave(err);
		}

	//	Disconnect拞儕僗僩偐傜奜偡
	iPlayerState->SetDisconnectPlayerControlComplete();
	
		//	Disconnect張棟傪揱偊傞
	iObserver->HandlePlayerEventL(ESmbMusicAPSinglePlayerStateDisconnectCompleteRsc);
	}
	

/**
 *	ClearPlayContext傪峴偭偰丄僾儗僀儎惂屼僒乕僶傪弶婜忬懺偵栠偡
 *
 *	@memo MOD824(儕僼傽僋僞儕儞僌帪)
 *	@param 側偟
 *	@return TInt KErrNone:張棟姰椆/KErrNotReady:旕摨婜梫媮懸偪/偦偺懠:憐掕偟側偄僄儔乕
 */
TInt CSmbMusicAPSinglePlayerModel::InitialPlayerControlL()
	{			
	if(NULL == iNotify || EFalse == IsConnectRsc())	//	iNotify偼constructL偱惗惉丅NULL側傜偽丄弶婜壔埲慜偺忬懺
		{											//	儕僜乕僗偵Connect偟偰偄側偄=弶婜忬懺
		return KErrNone;
		}
		
	iPlayerState->SetInitialForInitialPlayerControl();
	
	TInt ret = InitialPlayStateL();	//掆巭忬懺傑偱帩偭偰偄偔
	
	if(KErrNotReady == ret)
		{
		return KErrNotReady;	//	旕摨婜梫媮懸偪
		}

	//	SetPlayContext傪峴偭偨壜擻惈偑偁傞応崌
	if(NULL != iSetPlayContext)
		{
		iSetPlayContext->Cancel();
		}
		
	//	伀偳偪傜傕丄暋悢夞屇傫偱傕戝忎晇
	iNotify->Cancel();
	iPlayerState->SetWaitPlayerNotifyEvent(EFalse);

	if(EFalse != iPlayerState->IsFinishedSetPlayContext() 	//	愝掕嵪
	|| EFalse != iPlayerState->IsRequestSetPlayContext()
	|| ESmbMusicMWPlayerStateInitial != iServerState)	//	愝掕拞
		{
		//	愝掕拞偺応崌丄忋偱僉儍儞僙儖敪峴偟偰偄傞偺偱丄state傪remove偟偰傛偄丅
		//	忋偱Remove偟側偄偺偼丄僋儕傾僐儞僥僉僗僩傪憱傜偣傞偨傔
		iPlayerState->CancelSetPlayContextRequest();

		//	僐儞僥僉僗僩傪僋儕傾		
		TInt ret = ClearPlayContext();	

		if(KErrNone != ret)
			{
			SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("ClearContextErr(setplaycontext):%d(%d) "), ret, iPlayerState->IsFinishedSetPlayContext());		
			}
		else
			{
			ChangeServerStateL(ESmbMusicMWPlayerStateInitial);	//	ClearContext姰椆 = 弶婜忬懺
			}

		if(KErrNone != ret && KErrNotReady != ret)
			{
			return ret;	//	屇傃尦偱Leave
			}
		}
		
	iPlayerState->SetInitialPlayerControlComplete();	// 忬懺娗棟偱傑偲傔傞
	return KErrNone;	//	KErrNotReady偼張棟傪峴傢側偐偭偨
	}
	
/**
 *	捠忢嵞惗/憗憲傝/栠偟忬懺傪掆巭忬懺偵栠偡
 *
 *	@memo MOD824 儕僼傽僋僞儕儞僌
 *	@param	側偟
 *	@return TInt	KErrNone:張棟姰椆/KErrNotReady:旕摨婜梫媮懸偪/偦偺懠:憐掕奜偺僄儔乕
 */
TInt CSmbMusicAPSinglePlayerModel::InitialPlayStateL()
	{
	//	憗憲傝忬懺
	if(ESmbMusicMWPlayerStatePlayFF == iServerState)
		{
		SetNotifyPlayerEventL();
		
		if(EFalse == iPlayerState->IsRequestCancelPlayFF())
			{			
			//	僉儍儞僙儖敪峴(僒乕僶忬懺曄峏帪偵丄PlayFF梫媮拞偼夝彍偝傟傞偺偱晛捠偵忬懺傪愝掕偱偒傞)	
			TInt err = CancelPlayFF();
			
			if(KErrNone != err && KErrNotReady != err)
				{
				SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("InitialPlayState(PlayFF) Err:%d"), err);
				User::Leave(err);					
				}
			else if(KErrNotReady == err)
				{
				SetNotifyPlayerEventL();
				iPlayerState->CancelCancelPlayFFRequest();
				}
			}
		return KErrNotReady;	//	旕摨婜張棟懸偪
		}

	//	憗栠偟忬懺
	if(ESmbMusicMWPlayerStatePlayFR == iServerState)
		{
		SetNotifyPlayerEventL();		
		
		if(EFalse == iPlayerState->IsRequestCancelPlayFR())
			{
			//	僉儍儞僙儖敪峴(僒乕僶忬懺曄峏帪偵丄PlayFR梫媮拞偼夝彍偝傟傞偺偱晛捠偵忬懺傪愝掕偱偒傞)
			TInt err = CancelPlayFR();	//	埲崀丄CancelPlayFR仺PlayerStateChangedL
		
			if(KErrNone != err && KErrNotReady != err)
				{
				SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("InitialPlayState(PlayFR) Err:%d"), err);
				User::Leave(err);					
				}
			else if(KErrNotReady == err)
				{
				SetNotifyPlayerEventL();
				iPlayerState->CancelCancelPlayFFRequest();
				}
			}
		return KErrNotReady;	//	旕摨婜張棟懸偪
		}
	
	//	捠忢嵞惗
	if(ESmbMusicMWPlayerStatePlay == iServerState)
		{
		SetNotifyPlayerEventL();
		
		if(EFalse ==  iPlayerState->IsRequestPause())
			{		
			//	壒柭摦偑偼偠傑偭偰偄側偔偲傕丄嫮惂揑偵僉儍儞僙儖傪敪峴偡傞		
			TInt err = Pause();	//	壒柭摦偑巒傑偭偰偄側偔偲傕丄僒乕僶忬懺曄峏帪偵Play梫媮拞偼夝彍偝傟偰偄傞
			if(KErrNone != err && KErrNotReady != err)
				{
				SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("InitialPlayState(Play) Err:%d"), err);
				User::Leave(err);					
				}
			else if(KErrNotReady == err)
				{
				SetNotifyPlayerEventL();
				iPlayerState->CancelPauseRequest();
				}
			}
		return KErrNotReady;	//	旕摨婜張棟懸偪
		}

	//	擮偺偨傔丅ChgServerState偼曉偭偰偒偰偄側偄偑丄嵞惗梫媮偼弌偟偰偄傞応崌
	if(iPlayerState->IsRequestPlay())
		{
		SetNotifyPlayerEventL();
			
		TInt err = iPlayerSession->Pause();
		
		if(KErrNone != err && KErrNotReady != err)
			{
			SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelNormal,_L("InitialPlayState(Play(notChangeState)) Err:%d"), err);
			User::Leave(err);					
			}
		iPlayerState->CancelPlayRequest();
		//	旕摨婜偼懸偨側偄
		}
	 
	return KErrNone;
	}
	
//////////////////////////////////////////
/**
 *	壒惡僷僗惂屼僀儀儞僩
 *
 *	@param TMMAudioRoutingEventPckg aAudioRoutingEventPckg
 *	@return void
 */
void CSmbMusicAPSinglePlayerModel::MmmarcoHandleEvent(TMMAudioRoutingEventPckg  /* aAudioRoutingEventPckg */)
	{
	//	nop
	}

/**
 *	僗僺乕僇乕偺弌椡傪愝掕偡傞
 *
 *	@param	側偟
 *	@return	void
 *	@see	StopAudioRouting	
 */
void CSmbMusicAPSinglePlayerModel::SetSpeakerOut()
	{	
	if(EFalse != iSpeakerOut)
		{
		return;	//	愝掕偡傞昁梫偑側偄
		}
	
	iSpeakerOut = ETrue;	

	//	壒惡僷僗偺弌椡愝掕
	TMMAudioRoutingPrioritySettings audioSettings;

#ifdef __SMBMUSICAP_DESABLE_SUPERDUKE__
	audioSettings.iPriority = 0x80000000
							| ((EMdaBackSpeaker  << 24) & 0x0F000000)
							| ((EMdaSwap         << 20) & 0x00F00000)
							| ((EMdaAdvancedAudioCodec  << 16) & 0x000F0000)
							| ESmbMmCmnAudioPriorityNormal;	// 僾儔僀僆儕僥傿媦傃儖乕僥傿儞僌忣曬[in]
#else
	audioSettings.iPriority = 0x80000000
							| ((EMdaBackSpeaker  << 24) & 0x0F000000)
							| ((EMdaSwap         << 20) & 0x00F00000)
							| ((EMdaLineInAudio  << 16) & 0x000F0000)
							| ESmbMmCmnAudioPriorityNormal;	// 僾儔僀僆儕僥傿媦傃儖乕僥傿儞僌忣曬[in]
#endif

	audioSettings.iPref = EMdaPriorityPreferenceNone;		// 僾儔僀僆儕僥傿惂屼儌乕僪[in]
	audioSettings.iState = EMMARRequestPlayData;			// 儕僋僄僗僩忬懺[in]	
	audioSettings.iMelodyPort = 0;							// 儊儘僨傿嵞惗帪偺億乕僩斣崋[in]
	audioSettings.iPortPriority = 0;		
	
	User::After(KAudioRoutingDelay);	//	壒惡僷僗偵弌椡偡傞嵺丄僲僀僘偑擖傞偺傪杊巭偡傞偨傔偺抶墑
	iAudioRouting->MakeRequest(audioSettings);
	}
	
//////////////////////////////////////////////
//	僾儗僀儎惂屼
/**
 *	墘憈弨旛傪峴偆(MW偲偺僐僱僋僩丄壒惡僷僗愝掕懠)
 *	@memo 屻偱徻嵶愝寁廋惓(娭悢柤丒Leave丒Notify偺惗惉埵抲)
 *	@param	側偟
 *	@return	void
 */
void CSmbMusicAPSinglePlayerModel::PlayPrepareL()
	{
	//	MW偲僐僱僋僩
	TInt ret = iPlayerSession->Connect();
	if(KErrNone != ret)
		{
		SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelHigh,_L("MWPlayerSessionCannotConnect!!:%d"), ret);
		User::Leave(ret);
		}
	SetConnectRsc(ETrue);	//	儕僜乕僗Connect傪愝掕
	SetConfigL();
	ChangeServerStateL(ESmbMusicMWPlayerStateInitial);	//	connect偟偨 = Initial儌乕僪
	SetNotifyPlayerEventL();
	}

/**
 *	墘憈傪奐巒偡傞
 *
 *	@param	側偟
 *	@return TInt	KErrNone:幚峴/KErrNotReady:幚峴偝傟偰偄側偄
 */
TInt CSmbMusicAPSinglePlayerModel::PlayL()
	{
	if(EFalse == iPlayerState->SetPlayRequest())
		{
		return KErrNotReady;
		}
	SetNotifyPlayerEventL();

	SetPowerSaving(EFalse);	//	徣揹椡儌乕僪愝掕
	SetSpeakerOut();	//	壒惡僷僗偺弌椡愝掕
	TInt ret = iPlayerSession->Play();
	return ret;
	}

/**
 *	憗憲傝墘憈傪奐巒偡傞
 *
 *	@memo MOD824(For PlayReport)
 *	@param	側偟
 *	@return TInt	KErrNone:幚峴/KErrNotReady:幚峴偝傟偰偄側偄
 */
TInt CSmbMusicAPSinglePlayerModel::PlayFF()
	{
	if(EFalse == iPlayerState->SetPlayFFRequest())
		{
		return KErrNotReady;
		}
	TInt ret = iPlayerSession->PlayFF();
	
	//	棜楌僞僀儅娭楢
	if(KErrNone == ret)
		{
		TUint32 playTime(0);
		iPlayerSession->GetPlayTime(playTime);
		TInt err = iReportCounter->Pause(playTime, CSmbMusicAPLibReportCounter::EPlayFF);
		if(KErrNone != err)
			{
			SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLow,_L("ReportCounterPauseErr:%d(PlayFF)"), err);
			}
		}
		
	return ret;
	}

/**
 *	憗栠偟墘憈傪奐巒偡傞
 *
 *	@memo MOD824(For PlayReport)
 *	@param	側偟
 *	@return TInt	KErrNone:幚峴/KErrNotReady:幚峴偝傟偰偄側偄
 */
TInt CSmbMusicAPSinglePlayerModel::PlayFR()
	{
	if(EFalse == iPlayerState->SetPlayFRRequest())
		{
		return KErrNotReady;
		}

	TInt ret = iPlayerSession->PlayFR();
	
	if(KErrNone == ret)
		{
		TUint32 playTime(0);
		iPlayerSession->GetPlayTime(playTime);
		TInt err = iReportCounter->Pause(playTime, CSmbMusicAPLibReportCounter::EPlayFR);
		if(KErrNone != err)
			{
			SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLow,_L("ReportCounterPauseErr:%d(PlayFR)"), err);
			}
		}
		
	return ret;	
	}

/**
 *	摢弌偟
 *
 *	@memo MOD824(For PlayReport)
 *	@param	側偟
 *	@return TInt	KErrNone:幚峴/KErrNotReady:幚峴偝傟偰偄側偄
 */
TInt CSmbMusicAPSinglePlayerModel::SetSongHead(TBool aPause)
	{
	if(EFalse == iPlayerState->SetSetSongHeadRequest() 
	|| ESmbMusicMWPlayerStatePlayFF == iServerState)
		{
		if(EFalse != iPlayerState->IsSetSongHead())
			{
			SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLowest,_L("SetSongHead NotReady -> KErrNone"));
			iPlayerState->CancelSetSongHeadRequest();	//	梫媮拞傪夝彍
			return KErrNone;
			}
		return KErrNotReady;
		}
	//	堦嬋嵞惗偼嬋偑堦堄偵掕傑傞偺偱丄摢弌偟偺堷悢偵偼柍岠(0)傪偦傟偧傟愝掕偡傞
	TSmbMusicMWPlayerSongInfo info = { KIgnoreHandle, KIgnoreHandle };
	
	if(EFalse != aPause)	//	堦帪掆巭忬懺偺応崌偼丄摨婜偱張棟偑廔傢傞偺偱丄SetSongHead幚峴拞偼愝掕偟側偄
		{
		iPlayerState->CancelSetSongHeadRequest();	//	Pause拞偺梫媮側傜偽丄嵞惗柭摦捠抦傪懸偮偙偲偼側偄丅忬懺娗棟偺愝掕拞傪嶍彍]
		//ADD-S D_82400007238
		iPlayerState->SetNeedUserPlayConfirm(ETrue);	//	師夞嵞惗帪丄嵞惗妋擣偑偁傞側傜昁梫傪愝掕偡傞
		//ADD-E D_82400007238
		}

	//	SetPowerSaving偺摢偱丄儕僜乕僗偲Connect偟偰偄傞偐偳偆偐専嵏偟偰偄傞偨傔丄偦偺傑傑屇傫偱椙偄
	SetPowerSaving(EFalse);

//ADD-S D_82400015651, D_82400015652
	TUint32 playTime(0);
	PlayTime(playTime);	//	Disconnect拞側傜偽MW偵暦偒偵峴偐側偄傛偆丄帺暘偺娭悢傪巊偆
//ADD-S D_82400015651, D_82400015652
	TInt ret = iPlayerSession->SetSongHead(info);
	
	if(KErrNone == ret)	//	棜楌僞僀儅傪儕僙僢僩偡傞(堦帪掆巭忬懺/嵞惗忬懺偲傕偵)
		{
//DEL-S D_82400015651, D_82400015652
//		TUint32 playTime(0);
//		PlayTime(playTime);
//		iReportCounter->Pause(playTime, CSmbMusicAPLibReportCounter::EPosition);
//DEL-E D_82400015651, D_82400015652

//ADD-S D_82400015651, D_82400015652
	TInt pauseErr =	iReportCounter->Pause(playTime, CSmbMusicAPLibReportCounter::EPause);	//	堦帪掆巭拞偺応崌偼婛偵屇偽傟偰偄傞丅偩偑丄壗搙僞僀儅傪僉儍儞僙儖偟偰傕寢壥偼摨偠側偺偱偦偺傑傑屇傇
	SmbMusicAPSinglePlayerLog::OutputLog(KModel, EModel, ELogLevelLowest,_L("SetSongHead TimerErr Pause:%d playtime:%d"), pauseErr, playTime);
//ADD-E D_82400015651, D_82400015652
		iReportCounter->Reset(CSmbMusicAPLibReportCounter::EContinue);
		}

	return ret;
	}

/**
 *	墘憈掆巭
 *
 *	@param	側偟
*	@return TInt	KErrNone:幚峴/KErrNotReady:幚峴偝傟偰偄側偄
 */
TInt CSmbMusicAPSinglePlayerModel::Pause()
	{
	if(EFalse == iPlayerState->SetPauseRequest())
		{
		return KErrNotReady;
		}
		
	//	堦帪掆巭帪偺棜楌僇僂儞僞張棟偼ChangeState偱峴偆
	
	return iPlayerSession->Pause();
	}

/**
 *	憗憲傝夝彍(仺捠忢嵞惗)
 *
 *	@memo MOD824(For PlayReport)
 *	@param	側偟
 *	@return TInt	KErrNone:幚峴/KErrNotReady:幚峴偝傟偰偄側偄
 */
TInt CSmbMusicAPSinglePlayerModel::CancelPlayFF()
	{
	if(EFalse == iPlayerState->SetCancelPlayFFRequest())

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -