168 lines
4.4 KiB
C++
168 lines
4.4 KiB
C++
|
|
#include "cocos2d.h"
|
||
|
|
#include "YVTool.h"
|
||
|
|
using namespace YVSDK;
|
||
|
|
|
||
|
|
#include "YvVoiceManager.hpp"
|
||
|
|
|
||
|
|
YvVoiceManager* YvVoiceManager::GetInstance()
|
||
|
|
{
|
||
|
|
static YvVoiceManager* pManager = NULL;
|
||
|
|
if (pManager == NULL)
|
||
|
|
{
|
||
|
|
pManager = new YvVoiceManager();
|
||
|
|
}
|
||
|
|
|
||
|
|
return pManager;
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::Init()
|
||
|
|
{
|
||
|
|
pYVTool = YVTool::getInstance();
|
||
|
|
pYVTool->initSDK(1003394, cocos2d::FileUtils::getInstance()->getWritablePath(), false);
|
||
|
|
//pYVTool->initSDK(1001325, cocos2d::FileUtils::getInstance()->getWritablePath(), false);
|
||
|
|
cocos2d::log("YvVoiceManager.Init");
|
||
|
|
pYVTool->addLoginListern(this);
|
||
|
|
pYVTool->addReConnectListern(this);
|
||
|
|
pYVTool->addCPUserInfoListern(this);
|
||
|
|
pYVTool->addDownLoadFileListern(this);
|
||
|
|
pYVTool->addUpLoadFileListern(this);
|
||
|
|
pYVTool->addFinishPlayListern(this);
|
||
|
|
pYVTool->addRecordVoiceListern(this);
|
||
|
|
pYVTool->addStopRecordListern(this);
|
||
|
|
pYVTool->addCPUserInfoListern(this);
|
||
|
|
//pYVTool->addDownloadVoiceListern(this);
|
||
|
|
this->isPlaying = false;
|
||
|
|
|
||
|
|
onPlayFinishFunc = nullptr;
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::Cleanup()
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::Cleanup");
|
||
|
|
pYVTool->cpLogout();
|
||
|
|
pYVTool->releaseSDK();
|
||
|
|
delete pYVTool;
|
||
|
|
pYVTool = NULL;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::CpLogin(std::string nickName, std::string uuid)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::CpLogin");
|
||
|
|
pYVTool->cpLogin(nickName, uuid);
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::onLoginListern(CPLoginResponce*)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onLoginListern");
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::StartRecord()
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::StartRecord");
|
||
|
|
std::string savePath = cocos2d::FileUtils::getInstance()->getWritablePath() + cocos2d::StringUtils::format("record_%ld.amr", time(nullptr));
|
||
|
|
pYVTool->startRecord(savePath);
|
||
|
|
this->isPlaying = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::onRecordVoiceListern(RecordVoiceNotify* notify)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onRecordVoiceListern");
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::StopRecord()
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::StopRecord()");
|
||
|
|
pYVTool->stopRecord();
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::onStopRecordListern(RecordStopNotify* notify)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onStopRecordListern");
|
||
|
|
std::string fileName = notify->strfilepath;
|
||
|
|
this->UploadFile(fileName);
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::PlayRecord(std::string url)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::PlayRecord");
|
||
|
|
pYVTool->playFromUrl(url);
|
||
|
|
isPlaying = true;
|
||
|
|
//此处会产生两处回调 onDownLoadFileListern onFinishPlayListern
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::onDownLoadFileListern(DownLoadFileRespond* resp)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onDownLoadFileListern");
|
||
|
|
if(resp->result != 0)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onDownLoadFileListern download audio file failed %s", resp->msg.c_str());
|
||
|
|
if (this->onPlayFinishFunc != NULL)
|
||
|
|
{
|
||
|
|
this->onPlayFinishFunc();
|
||
|
|
}
|
||
|
|
isPlaying = false;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
isPlaying = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::onFinishPlayListern(StartPlayVoiceRespond* resp)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onFinishPlayListern");
|
||
|
|
this->isPlaying = false;
|
||
|
|
if (this->onPlayFinishFunc != NULL)
|
||
|
|
{
|
||
|
|
this->onPlayFinishFunc();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//云播放时下载进度事件
|
||
|
|
void YvVoiceManager::onDownloadVoiceListern(YVSDK::DownloadVoiceRespond* resp)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onDownloadVoiceListern percent: %d", resp->percent);
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::UploadFile(std::string fileName)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::UploadFile");
|
||
|
|
pYVTool->upLoadFile(fileName, fileName);
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::onUpLoadFileListern(UpLoadFileRespond* resp)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onUpLoadFileListern percent %u", resp->percent);
|
||
|
|
//发送到其他客户端, sendTalkFile
|
||
|
|
if(resp->result != 0)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onUpLoadFileListern upload failed.result %d: %s ", resp->result, resp->msg.c_str() );
|
||
|
|
// 删除文件;
|
||
|
|
cocos2d::FileUtils::getInstance()->removeFile(resp->fileid);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (resp->percent==100 && this->uploadListen != NULL)
|
||
|
|
{
|
||
|
|
this->uploadListen->onUpLoadFileListern(resp);
|
||
|
|
// 删除文件;
|
||
|
|
cocos2d::FileUtils::getInstance()->removeFile(resp->fileid);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::onFinishSpeechListern(SpeechStopRespond*)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onFinishSpeechListern");
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::onCPUserInfoListern(GetCPUserInfoRespond*)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onCPUserInfoListern");
|
||
|
|
}
|
||
|
|
|
||
|
|
void YvVoiceManager::onReConnectListern(ReconnectionNotify*)
|
||
|
|
{
|
||
|
|
cocos2d::log("YvVoiceManager::onReConnectListern");
|
||
|
|
}
|