音频服务(Audio Kit)是华为公司在音频领域的能力集合,为您提供了基于HMS生态的音频播放能力,包括硬件及系统底层的音频编解码能力。
您可以基于Audio Kit快速搭建自己的音频播放能力,构建自己的音频应用。
在这个Codelab中,您将学会创建一个Demo Project,实现对音频服务的API调用,通过Demo Project您可以体验到:
集成HUAWEI HMS Core能力,您需要完成以下准备工作:
7.0以下版本 |
7.0版本 |
7.1及以上版本 |
7.0以下版本
i. 打开Android Studio项目级"build.gradle"文件。
ii. 添加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/' } } }
在"app"目录下的"build.gradle"文件中添加依赖。
implementation 'com.huawei.hms:audiokit-player:{version}'
点击工具栏中的"gradle"同步图标,完成"build.gradle"文件的同步,将相关依赖下载到本地。
<?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.**{*;}
// 初始化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();
}
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;
}
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);
}
下载并解压示例代码。
示例代码打包安装完成后,点击应用图标,即可欣赏音乐。应用会自动扫描本地音乐列表。
干得好,您已经成功完成了Codelab并学到了:
您可以阅读相关文档,了解更多相关的信息。
本Codelab中所用Demo源码下载地址:source code。