android里面播放声音的方法---执行某项操作发出滴的一声

本文介绍了一种在Android应用中实现提示音播放和设备震动的方法。通过使用MediaPlayer和SoundPool类来播放提示音,并利用Vibrator服务实现设备震动反馈。文章详细展示了如何初始化和控制这些组件。

/****************提示声音 震动  发送成功之后显示**********/
private MediaPlayer mediaPlayer;
private boolean playBeep;
private static final float BEEP_VOLUME = 0.10f;
private boolean vibrate;
private void initBeepSound() {
if (playBeep && mediaPlayer == null) {
// The volume on STREAM_SYSTEM is not adjustable, and users found it
// too loud,
// so we now play on the music stream.
((Activity) context).setVolumeControlStream(AudioManager.STREAM_MUSIC);
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnCompletionListener(beepListener);


AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.beep);
try {
mediaPlayer.setDataSource(file.getFileDescriptor(),file.getStartOffset(), file.getLength());
file.close();
mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME);
mediaPlayer.prepare();
} catch (IOException e) {
mediaPlayer = null;
}
}
}

private final OnCompletionListener beepListener = new OnCompletionListener() {
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.seekTo(0);
}
};

private static final long VIBRATE_DURATION = 200L;


private void playBeepSoundAndVibrate() {
if (playBeep && mediaPlayer != null) {
mediaPlayer.start();
}
if (vibrate) {
Vibrator vibrator = (Vibrator) context.getSystemService(context.VIBRATOR_SERVICE);
vibrator.vibrate(VIBRATE_DURATION);
}
}



private void initVoice() {
// TODO Auto-generated method stub
playBeep = true;
AudioManager audioService = (AudioManager)context.getSystemService(context.AUDIO_SERVICE);
if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) {
playBeep = false;
}
initBeepSound();
vibrate = true;
}

/*************************************************/

/***************播放声音的另外一种方法*****************/
    private SoundPool soundPool;
    private int music;
    /**哪里要调用就执行这行代码**/
    public void play_voice() {
        soundPool.play(music, 1, 1, 0, 0, 1);
    }
    /**播放声音初始化*/
    public void initVoice2(){
        soundPool= new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);//第一个参数为同时播放数据流的最大个数,第二数据流类型,第三为声音质量
        music = soundPool.load(context, R.raw.beep, 1); //把你的声音素材放到res/raw里,第2个参数即为资源文件,第3个为音乐的优先级
    }
/*********************************************/
### RK3568 Android 开机启动播放音频实现方法 对于RK3568平台,在Android开机过程中加入音频播放功能可以通过设置特定的配置以及利用已有的工具来完成。一种有效的方法是通过视频Logo的方式来实现在开机期间不仅显示图像还能同步发出声音。 #### 使用视频Logo方式支持音频播放 在RK3568平台上,如果希望在Android系统启动时能够播放自定义的声音文件,则可以选择制作一段带有音轨的视频作为开机Logo[^1]。这种方法允许同时展示视觉效果并提供背景音乐或其他提示声效给用户。具体来说: - 制作包含所需画面与对应音频轨道在内的短视频片段; - 将这个视频文件放置于适当位置,并调整相关参数使得其可以在系统初始化阶段被调用执行。 #### 音频调试及控制 为了确保所选音频能够在不同场景下正常工作(比如连接外部设备),还需要熟悉如何使用`tinyalsa`这类底层音频管理工具来进行必要的测试和优化[^2]。这包括但不限于了解各个子命令的作用范围及其应用场景,例如: - `tinycap`: 用于捕获来自麦克风或者其他输入源的数据流。 - `tinyplay`: 可用来回放存储好的PCM格式样本数据至扬声器或耳机端口。 - `tinymix`: 提供了一个交互式的环境让用户可以直接修改混音器的各项设定值。 这些实用程序可以帮助开发者快速定位潜在问题所在之处,并采取相应措施加以解决。 #### 自动化脚本编写 为了让整个过程更加简便高效,建议创建一些简单的Shell脚本来自动化上述提到的一些重复性的任务。下面给出了一段Python代码示例,它展示了怎样构建这样一个简易但有效的解决方案框架: ```python import os def play_audio_on_boot(): # 定义要播放的音频路径 audio_path = "/path/to/your/audio/file.wav" try: # 执行tinyplay命令以播放指定音频文件 result = os.system(f"tinyplay {audio_path}") if result != 0: raise Exception("Failed to execute tinyplay command.") print("Audio played successfully during boot process.") except Exception as e: print(f"An error occurred while trying to play the startup sound: {e}") if __name__ == "__main__": play_audio_on_boot() ``` 这段代码只是一个概念验证性质的例子,实际应用中可能需要根据具体情况做出更多细节上的调整和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值