openharmony hi3518开发板实现扫码后添加声音 原创
前期准备
1、参考openharmony hi3518开发板实现扫码这篇文章成功识别出二维码
2、准备一个音频文件(MP4格式)
配置
1、配置BUILD.gn,deps中加入
"//foundation/multimedia/media_lite/frameworks/player_lite:player_lite",
"//third_party/bounds_checking_function:libsec_shared",
2、camera_sample.cpp文件里加入头文件player.h
添加代码
1、camera_sample.cpp文件里添加播放声音的代码
void Beep(){
player_ = new Player();
std::shared_ptr<PlayerCallback> callback = std::make_shared<TestPlayerCallback>();
player_->SetPlayerCallback(callback);//设置player回调
std::string uri("beep.mp4");//此处filePath为本地文件路径
Source source(uri);//保存uri到source实例
player_->SetSource(source);//将source设置到player
player_->Prepare();//准备播放
Surface *surface = Surface::CreateSurface();
player_->SetVideoSurface(surface);//设置播放窗口
player_->Play();//开始播放
}
2、添加回调并在完成播放时释放资源
class TestPlayerCallback : public PlayerCallback{
void OnPlaybackComplete() override
{
//此处实现代码用于处理文件播放完成的事件
cout <<"PlayerCallback OnPlaybackComplete" << endl;
player_->Stop(); //停止播放
player_->Release();//释放资源
}
void OnError(int32_t errorType, int32_t errorCode) override
{
//此处实现代码处理错误事件
cout <<"PlayerCallback OnError" << endl;
}
void OnInfo(int type, int extra) override
{
//此处实现代码处理普通事件
cout <<"PlayerCallback OnInfo" << endl;
}
void OnRewindToComplete() override
{
//此处实现代码处理进度控制完成的事件
cout <<"PlayerCallback OnRewindToComplete" << endl;
}
void OnVideoSizeChanged(int width, int height) override
{
cout <<"PlayerCallback OnVideoSizeChanged" << endl;
}
};
3、在完成扫码时调用Beep()方法
cout << "end read_image...." << endl;
if(res == 0){
Beep();
}
编译和运行
1、执行命令编译hb build camera_lite
2、运行camera_sample文件,如果成功识别出二维码就会听到mp4文件播放的声音
遇到的问题
音频文件如果是MP3格式的话会播放失败
据说3.0支持mp3了