简介

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

您将建立什么

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

您将学到什么

硬件要求

软件要求

需要的知识点

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

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

添加编译依赖和相关权限

  1. 配置Audio SDK 的 Maven 仓地址
    Android Studio的代码库配置在Gradle插件7.0以下版本、7.0版本和7.1及以上版本有所不同。请根据您当前的Gradle插件版本,选择对应的配置过程。

    7.0以下版本

    7.0版本

    7.1及以上版本

    • 7.0以下版本
      i.  打开Android Studio项目级"build.gradle"文件。


      ii.  添加Maven代码库。

        • 在"buildscript > repositories"中配置Audio SDK 的 Maven 仓地址。
        • 在"allprojects > repositories"中配置Audio SDK 的 Maven 仓地址。
        buildscript { 
            repositories { 
                google() 
                jcenter() 
                // 配置Audio SDK的Maven仓地址。 
                maven {url 'https://developer.huawei.com/repo/'} 
            } 
        } 
        allprojects { 
            repositories { 
                google() 
                jcenter() 
                // 配置Audio SDK的Maven仓地址。 
                maven {url 'https://developer.huawei.com/repo/'} 
            } 
        }
    • 7.0版本
      i.  打开Android Studio项目级"build.gradle"文件。


      ii.  在“buildscript > repositories”中配置Audio SDK的Maven仓地址。

      buildscript { 
          repositories { 
              google() 
              jcenter() 
              // 配置Audio SDK的Maven仓地址。 
              maven {url 'https://developer.huawei.com/repo/'} 
          } 
      	  

      iii. 打开项目级“settings.gradle”文件,配置Audio SDK的Maven仓地址。

      dependencyResolutionManagement { 
             ... 
          repositories { 
              google() 
              jcenter()  
              // 配置Audio SDK的Maven仓地址。 
              maven {url 'https://developer.huawei.com/repo/'} 
          } 
      }
    • 7.1及以上版本
      i.  打开Android Studio项目级"settings.gradle"文件。


      ii.  配置Audio SDK的 Maven 仓地址。

      pluginManagement { 
          repositories { 
              gradlePluginPortal() 
              google() 
              mavenCentral() 
              // 配置Audio SDK的Maven仓地址。 
              maven { url 'https://developer.huawei.com/repo/' } 
          } 
      } 
      dependencyResolutionManagement { 
          ... 
          repositories { 
              google() 
              mavenCentral() 
              // 配置Audio SDK的Maven仓地址。 
              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() { @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 getOnlinePlaylist() { List playItemList = new ArrayList<>(); // 创建音频对象audioPlayItem1,写入"chengshilvren"音频的信息。 HwAudioPlayItem audioPlayItem1 = new HwAudioPlayItem(); audioPlayItem1.setAudioId("1000"); audioPlayItem1.setSinger("Taoge"); audioPlayItem1.setOnlinePath("https://developer.huawei.com/config/file/HMSCore/AudioKit/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://developer.huawei.com/config/file/HMSCore/AudioKit/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://developer.huawei.com/config/file/HMSCore/AudioKit/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