HuaweiHMSCore音频编辑器(AudioEditorKit)是华为帮助全球开发者快速构建各类应用音频能力的服务。音频领域的先进技术。音频剪辑服务为开发者提供基础音频剪辑、AI配音、音源分离、空间渲染、变声、多种音效等丰富的音频处理能力,以及性能卓越、易用、强大的接口开放性。根据应用场景,音频功能的集成可以在App中高效、轻松地完成。音频编辑UISDK提供产品级UI接口,集成接入简单快捷。开发准备1、配置AppGalleryConnect2,配置HMSCoreSDK3的Maven仓库地址,集成HMSCoreSDK4,在“AndroidManifest.xml”文件中添加相关权限。注意:如果应用集成的AndroidSDK版本为29及以上,需要在AndroidManifest.xml的application节点下添加如下属性,以获得访问外部存储文件的权限。支持的设备RESTAndroid:华为手机EMUI5.0及以上,非华为手机Android7.0及以上SDK集成开发1.初始化SDK,设置认证信息应用程序。如果不设置,部分功能会受到影响。//获取agconnect-services.json文件中的api_key。//在官方应用中,建议将api_key存放在云端,运行时获取。Stringapi_key=AGConnectInstance.getInstance().getOptions().getString("client/api_key");//设置api_keyHAEApplication.getInstance().setApiKey(api_key);2.创建AudioFilePickerActivity,这是一个自定义的Audio文件选择Activity。/***自定义音频文件选择的Activity接口*/publicclassAudioFilePickerActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(@NullableBundlesavedInstanceState){super.onCreate(savedInstanceState);执行文件搜索();}privatevoidperformFileSearch(){//选择多个音频文件registerForActivityResult(newActivityResultContracts.GetMultipleContents(),newActivityResultCallback>(){@OverridepublicvoidonActivityResult(Listresult){handleSelectedAudios(result);finish();}}).launch("音频/*");}/***处理选中的音频,将Uri转换为需要的路径**@paramuriList选中的音频文件*/privatevoidhandleSelectedAudios(ListuriList){//判断音频文件是否存在if(uriList==空||uriList.size()==0){返回;}ArrayListaudioList=newArrayList<>();for(Uriuri:uriList){//获取真实路径StringfilePath=FileUtils.getRealPath(this,uri);audioList.add(文件路径);}//返回音频文件路径到音频编辑页面Intentintent=newIntent();//使用SDK提供的HAEConstant.AUDIO_PATH_LISTintent.putExtra(HAEConstant.AUDIO_PATH_LIST,audioList);//使用SDK提供的HAEConstant.RESULT_CODE作为resultCODEthis.setResult(HAEConstant.RESULT_CODE,intent);结束();}}用于获取真实路径的FileUtils工具类可以在示例代码中查看。工具类路径为:app/src/main/java/com/huawei/hms/audioeditor/demo/util/FileUtils.java3。在“AndroidManifest.xml”中为AudioFilePickerActivity添加一个action值,SDK会根据这个action跳转4.启动音频编辑页面。方式一:不带入参的启动方式使用SDK提供的默认配置,方便快捷。HAEUIManager.getInstance().launchEditorActivity(this);方式二:带入参的启动方式,支持设置菜单列表、自定义导出文件路径、音频文件路径、草稿模式等。1.带有菜单列表和自定义导出文件路径的启动方法://一级菜单列表(以下菜单列表只是部分示例)ArrayListmenuList=newArrayList<>();//添加音频menuList。add(MenuCommon.MAIN_MENU_ADD_AUDIO_CODE);//录音menuList.add(MenuCommon.MAIN_MENU_AUDIO_RECORDER_CODE);//二级菜单列表(以下菜单列表只是部分示例),导入音频后,选择音频时显示ArrayListsecondMenuList=newArrayList<>();//拆分secondMenuList.add(MenuCommon.EDIT_MENU_SPLIT_CODE);//删除secondMenuList.add(MenuCommon.EDIT_MENU_DEL_CODE);//音量secondMenuList.add(MenuCommon.EDIT_MENU_VOLUME2_CODE);//自定义导出路径StringexportPath=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getPath()+"/";AudioEditorLaunchOption.BuilderaudioEditorLaunch=newAudioEditorLaunchOption.Builder()//设置一级菜单setCustomMenuList(menuList)//设置二级菜单menu.setSecondMenuList(secondMenuList)//设置导出路径.setExportPath(exportPath);//带有菜单列表和自定义音频文件导出路径的启动方法try{HAEUIManager.getInstance().launchEditorActivity(this,audioEditorLaunch.build(),newLaunchCallback(){@OverridepublicvoidonFailed(interrCode,StringerrMsg){Toast.makeText(mContext,errMsg,Toast.LENGTH_SHORT).show();}});}catch(IOExceptione){e.printStackTrace();}下图是一级菜单和二级菜单的样式:2、带音频文件路径的Start方法//设置音频导入路径ArrayListaudioInfoList=newArrayList<>();//音频路径,以实际路径为准。StringaudioPath="/storage/emulated/0/Music/Dream_It_Possible.flac";//创建一个AudioInfo实例,传入音频路径。AudioInfoaudioInfo=newAudioInfo(audioPath);//设置音频名称audioInfo.setAudioName("Dream_It_Possible");audioInfoList.add(audioInfo);AudioEditorLaunchOption.BuilderaudioEditorLaunch=newAudioEditorLaunchOption.Setaudioimportpath()audioInfoList);//使用音频文件路径启动方法Toast.LENGTH_SHORT).show();}});}catch(IOExceptione){e.printStackTrace();}带音频文件路径的启动模式,启动音频编辑页面后直接进入二级菜单。3.启动草稿模式。//获取草稿列表,这里仅作演示使用ListdraftList=HAEUIManager.getInstance().getDraftList();//指定草稿列表的第一个草稿StringdraftId=null;if(!draftList.isEmpty()){draftId=draftList.get(0).getDraftId();}AudioEditorLaunchOption.BuilderaudioEditorLaunch=newAudioEditorLaunchOption.Builder()//设置草稿ID,可为空.setDraftId(draftId)//设置draft模式,默认值为NOT_SAVE:不保存。.setDraftMode(AudioEditorLaunchOption.DraftMode.SAVE_DRAFT);//使用草稿启动模式){Toast.makeText(mContext,errMsg,Toast.LENGTH_SHORT).show();}});}catch(IOExceptione){e.printStackTrace();}DemoFAQQ1:添加音效、AI配音等函数提示“Token过期或无效”。请检查是否配置了认证信息。如果没有,您可以参考此链接进行配置。一般在log中会有如下提示:HAEApplication:pleasesetyourappapiKey。Q2:进行相关操作时,提示“内部错误”。1.检查是否配置了认证信息。2、在AppGalleryConnect中,查看应用的音频编辑服务开关是否开启。如果未启用,您可以参考此链接启用它。开关开启后受缓存影响,一般需要一段时间才会生效。更多详情>>访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:GitHub、Gitee关注我们,第一时间了解HMSCore最新技术资讯~