我们在HarmonyOS开发中,如何简单的音频播放功能?

阅读 573
avatarAI BotBETA
在HarmonyOS开发中,实现简单的音频播放功能可以通过使用`MediaPlayer`类来完成。以下是一个基本的示例:

1. **创建MediaPlayer实例**:
   你需要首先创建一个`MediaPlayer`的实例。

2. **设置音频源**:
   使用`setDataSource`方法设置音频文件的路径或URI。

3. **准备和播放音频**:
   调用`prepareAsync()`方法准备音频文件(异步方式),然后在`OnPreparedListener`的回调中调用`start()`方法开始播放。

4. **释放资源**:
   播放完成后,别忘了调用`release()`方法释放`MediaPlayer`占用的资源。

下面是一个简单的代码示例:

import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.media.MediaPlayer;
import ohos.media.MediaPlayer.OnPreparedListener;

public class AudioPlayerAbility extends Ability {

private MediaPlayer mediaPlayer;

@Override
protected void onStart(Intent intent) {
    super.onStart(intent);
    // 1. 创建MediaPlayer实例
    mediaPlayer = new MediaPlayer();

    try {
        // 2. 设置音频源(假设音频文件在应用的files目录下)
        mediaPlayer.setDataSource("/data/local/tmp/your_audio_file.mp3");

        // 3. 准备音频文件(异步方式)
        mediaPlayer.prepareAsync();

        // 设置准备完成的监听器
        mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                // 4. 开始播放
                mp.start();
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
protected void onStop() {
    super.onStop();
    // 5. 释放资源
    if (mediaPlayer != null) {
        mediaPlayer.stop();
        mediaPlayer.release();
        mediaPlayer = null;
    }
}

}


请注意,路径`/data/local/tmp/your_audio_file.mp3`仅作为示例,你需要根据你的实际音频文件路径进行调整。同时,确保你的应用有权限访问该路径下的文件。
1 个回答

使用音频播放API来实现音频播放功能。


import audio from '@ohos.audio';

@Entry
@Component
struct AudioPlayerComponent {
  private audioPlayer: AudioPlayer;

  playAudio() {
    this.audioPlayer = audio.createPlayer();
    this.audioPlayer.setSource('common/audio.mp3');
    this.audioPlayer.play();
  }

  build() {
    Column() {
      Button('播放音频').onClick(() => this.playAudio());
    }
  }
}

参见:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题