简介

音频服务(Audio Kit)是华为公司在音频领域的能力集合,为您提供了基于HMS生态的音频播放能力,包括硬件及系统底层的音频编解码能力。
您可以基于Audio Kit快速搭建自己的音频播放能力,构建自己的音频应用。

您将建立什么

在这个Codelab中,您将学会创建一个Demo Project,实现对音频服务的API调用,通过Demo Project您可以体验到:

您将学到什么

硬件要求

软件要求

需要的知识点

集成HUAWEI HMS Core能力,您需要完成以下准备工作:

  1. 配置AppGallery Connect
  2. 创建Android Studio工程。
  3. 添加应用包名并保存配置文件。
具体操作,请按照Audio Kit开发指南中详细说明来完成。

添加编译依赖和相关权限

  1. 添加gradle工具配置以及Maven代码库。
    1. 在"buildscript > repositories"中配置Audio SDK的Maven仓地址。
    2. 在"allprojects > repositories"中配置Audio SDK的Maven仓地址。
    3. 在"buildscript > dependencies"中增加gradle配置。
    buildscript { repositories { google() jcenter() maven {url 'https://developer.huawei.com/repo/'} } dependencies { classpath 'com.android.tools.build:gradle:3.4.2' // 注意:不要将应用程序依赖项放在此处 // 它们属于单独的模块build.gradle文件中 } } allprojects { repositories { google() jcenter() maven {url 'https://developer.huawei.com/repo/'} } }
  2. 在"app"目录下的"build.gradle"文件中添加依赖。
    implementation ‘com.huawei.hms:audiokit-player:{version}'
  3. 点击工具栏中的"gradle"同步图标,完成"build.gradle"文件的同步,将相关依赖下载到本地。

  4. 编写"app\src\main\AndroidManifest.xml"文件,添加相关权限。
    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.huawei.hms.audiokitdemotest"> <!-- Need to access the network and obtain network status information--> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- android4.4 To operate SD card, you need to apply for the following permissions --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_MEDIA_STORAGE" /> <!-- 9.0 Adaptation --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- Play songs to prevent CPU from sleeping. --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <application android:allowBackup="false" android:debuggable="false" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

配置混淆脚本

编译APK前您需要配置混淆脚本,避免功能异常。
Android Studio开发环境里的配置文件是"proguard-rules.pro"。
打开Android工程的混淆配置文件,加入排除HMS Core SDK的混淆配置。

-ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.huawei.hianalytics.**{*;} -keep class com.huawei.updatesdk.**{*;} -keep class com.huawei.hms.**{*;}

编写播放代码

  1. 编写"...\app\src\main\java\com\huawei\hms\audiokitdemotest"目录下的"MainActivity.java"文件,创建播放管理对象,并播放歌曲。
    // 初始化SDK public void init(final Context context) { Log.i(TAG, "init start"); new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... voids) { // 创建配置实例,包含各种播放相关的配置 HwAudioPlayerConfig hwAudioPlayerConfig = new HwAudioPlayerConfig(context); // 执行创建控制实例的操作 HwAudioManagerFactory.createHwAudioManager(hwAudioPlayerConfig, new HwAudioConfigCallBack() { // Audio Kit回调返回控制实例 @Override public void onSuccess(HwAudioManager hwAudioManager) { try { Log.i(TAG, "createHwAudioManager onSuccess"); mHwAudioManager = hwAudioManager; // 获取播放控制实例 mHwAudioPlayerManager = hwAudioManager.getPlayerManager(); mHwAudioPlayerManager.playList(getOnlinePlaylist(), 0, 0); } catch (Exception e) { Log.e(TAG, "player init fail", e); } } @Override public void onError(int errorCode) { Log.e(TAG, "init err:" + errorCode); } }); return null; } }.execute(); }
  2. 创建音频对象,写入必要的信息。
    public List<HwAudioPlayItem> getOnlinePlaylist() { List<HwAudioPlayItem> playItemList = new ArrayList<>(); // 创建音频对象audioPlayItem1,写入"chengshilvren"音频的信息 HwAudioPlayItem audioPlayItem1 = new HwAudioPlayItem(); audioPlayItem1.setAudioId("1000"); audioPlayItem1.setSinger("Taoge"); audioPlayItem1.setOnlinePath("https://lfmusicservice.hwcloudtest.cn:18084/HMS/audio/Taoge-chengshilvren.mp3"); audioPlayItem1.setOnline(1); audioPlayItem1.setAudioTitle("chengshilvren"); playItemList.add(audioPlayItem1); // 创建音频对象audioPlayItem2,写入"dayu"音频的信息 HwAudioPlayItem audioPlayItem2 = new HwAudioPlayItem(); audioPlayItem2.setAudioId("1001"); audioPlayItem2.setSinger("Taoge"); audioPlayItem2.setOnlinePath("https://lfmusicservice.hwcloudtest.cn:18084/HMS/audio/Taoge-dayu.mp3"); audioPlayItem2.setOnline(1); audioPlayItem2.setAudioTitle("dayu"); playItemList.add(audioPlayItem2); // 创建音频对象audioPlayItem3,写入"wangge"音频的信息 HwAudioPlayItem audioPlayItem3 = new HwAudioPlayItem(); audioPlayItem3.setAudioId("1002"); audioPlayItem3.setSinger("Taoge"); audioPlayItem3.setOnlinePath("https://lfmusicservice.hwcloudtest.cn:18084/HMS/audio/Taoge-wangge.mp3"); audioPlayItem3.setOnline(1); audioPlayItem3.setAudioTitle("wangge"); playItemList.add(audioPlayItem3); return playItemList; }
  3. 在"MainActivity.java"文件onCreate函数中执行播放音频操作。

    public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private HwAudioManager mHwAudioManager; private HwAudioPlayerManager mHwAudioPlayerManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(MainActivity.this); }
  4. 执行安装操作,进入应用界面后即可播放设定的音乐。

下载并解压示例代码

运行Audio Kit示例代码

  1. 打开Android Studio,选择"File > Open",选择示例代码解压后的路径。
  2. 选择AudioKitDemo工程,点击"OK"。
  3. 选择"Gradle"页面,点击"installDebug"运行示例代码。

验证测试

示例代码打包安装完成后,点击应用图标,即可欣赏音乐。应用会自动扫描本地音乐列表。

干得好,您已经成功完成了Codelab并学到了:

您可以阅读相关文档,了解更多相关的信息。
本Codelab中所用Demo源码下载地址:source code

Code copied