Android音频和震动的基本实现
Android为音频和震动功能提供了两个类:
MediaPlayer 播放器类
Vibrator 震动类
实现效果:打开应用时,播放一段音乐并且震动
(这里没有用按键做操作停止播放,继续播放,可以使用MediaPlayer.start()以及MediaPlayer.pause()做播放和暂停(暂停这里需要记录播放的时长))
音频流程 inits():
零.在res目录下创建raw目录,放入准备好的ogg音频文件
一.设定蜂鸣器类型(声音的类型)
二.得到系统服务Context.AUDIO_SERVICE
三.判断静音情况下dosomething
四.创建播放器对象,设置播放器声音类型
五.得到多媒体文件AssetFileDescriptor
六.设置多媒体数据源,之后要记住close掉AssetFileDescriptor文件
七,设置循环播放,并开始播放
震动流程 initVibrate():
一.创建Vibrator对象并得到系统服务Context.VIBRATOR_SERVICE
二.开始震动并设置震动时长,是否循环vibrator.vibrate();
代码:
public class MainActivity extends Activity {private static final float BEEP_VOLUME = 0.70f; //定义声音的大小 记住要加上f@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);inits();initVibrate();}//蜂鸣器,声音private void inits() {//设定蜂鸣器类型(声音的类型)this.setVolumeControlStream(AudioManager.STREAM_MUSIC); //设置为音乐回放就是媒体音量AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); //得到系统服务Context.AUDIO_SERVICEif(audioManager.getRingerMode()!=AudioManager.RINGER_MODE_NORMAL){ //如果是静音情况下,不做任何事情Toast.makeText(this,"手机已经静音,请取消静音后再重新打开",Toast.LENGTH_SHORT).show();return;}MediaPlayer mediaPlayer = new MediaPlayer(); //播放器对象mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置播放器音乐类型/*mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer mediaPlayer) {mediaPlayer.seekTo(5000); //设置从5s开始播放 并没有起到作用}});*/AssetFileDescriptor fileDescriptor = this.getResources().openRawResourceFd(R.raw.shenwu);//得到fileDescriptor文件,即多媒体文件//数据源try { //设置多媒体数据源mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(),fileDescriptor.getLength());fileDescriptor.close(); //释放资源mediaPlayer.setVolume(BEEP_VOLUME,BEEP_VOLUME); //设置左声道,右声道的音量mediaPlayer.prepare(); //准备好了}catch (IOException e){mediaPlayer = null; //如果出现异常,释放资源}mediaPlayer.setLooping(true); //循环播放mediaPlayer.start(); //开始}//震动效果 记住加权限android.permission.VIBRATEprivate void initVibrate(){Vibrator vibrator = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE); //得到系统震动服务vibrator.vibrate(new long[]{1000,2000},0); //设置震动的时长 这里是等待1秒,震动2秒 0表示循环/*只有1个参数的时,第一个参数用来指定振动的毫秒数。要传递2个参数的时候,第1个参数用来指定振动时间的样本,第2个参数用来指定是否需要循环.振动时间的样本是指振动时间和等待时间的交互指定的数组.*/vibrator.cancel();}
}
Android音频和震动的基本实现相关推荐
- android音频系统(4):AudioService之音量管理
前言:AudioService这个系统服务包含或者使用了几乎所有与音频有关的内容,AudioService是音频系统在java层的大本营: android音频系统,分为两个部分:数据流和策略: 数据流 ...
- 一次搞懂 Android 音频开发
在接触Android音频开发后,陆陆续续的看了不少的文章,如果说查缺补漏把这些文章梳理清楚,然后逐个整合,那么确实也能完整的推导出音频开发需要掌握的技术.但是对于初学者来说,可能在开发中产生很多障碍以 ...
- android 实现拨通震动,Android编程实现震动与振铃的方法详解
本文实例讲述了Android编程实现震动与振铃的方法.分享给大家供大家参考,具体如下: 1.Android的震动实现--Vibrator类 (1)实现震动,首先要加上使用震动所需的权限 (2)需要用到 ...
- Android中实现震动的方法
https://blog.csdn.net/bruceyangjie/article/details/53283899 Android中实现震动的方法 版权声明:本文为博主原创文章,未经博主允许不得转 ...
- android音频调制通讯,android音频口通信(一)——2FSK信号调制
转载请注明文章出处和作者! 作者:大熊(Xandy) 一.前言 之前一直都在博客园混(地址:http://www.cnblogs.com/xl19862005),最近才搬家至CSDN,由于前几个月刚换 ...
- Android音频开发(4):如何存储和解析wav文件
2019独角兽企业重金招聘Python工程师标准>>> 无论是文字.图像还是声音,都必须以一定的格式来组织和存储起来,这样播放器才知道以怎样的方式去解析这一段数据,例如,对于原始的图 ...
- android音频系统之AudioTrack的使用
今天,简单讲讲 AudioTrack的使用. 1.Android AudioTrack简介 在android中播放声音可以用MediaPlayer和AudioTrack两种方案的,但是两种方案是 ...
- Android音频开发(3):如何播放一帧音频
本文重点关注如何在Android平台上播放一帧音频数据.阅读本文之前,建议先读一下<Android音频开发(1):基础知识>,因为音频开发过程中,经常要涉及到这些基础知识,掌握了这些重要的 ...
- Android音频处理 PCM格式
Android音频处理--通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能 Android音频开发(2):使用AudioRecord录制pcm格式音频 AudioTrack读取 ...
最新文章
- BoBo接入云信,直播互动“连麦抢麦”分分钟搞定
- 《VMware 网络技术:原理与实践》—— 3.2 以太网
- MSSQLSERVER服务不能启动
- filter_var()函数
- linux安装openssl
- 今天听说了一个压缩解压整型的方式-group-varint
- 选中下拉列表显示全部数据_小白都能学会的多级下拉列表,让你的Excel效率提升百倍...
- 炸窝(Java)拼接
- 基于哈希表的索引堆变形(Hackerrank: QHEAP1)
- 三十、详测 Generics Collections: TObjectList、TObjectQueue、TObjectStack
- MFC 教程【9_MFC的状态】
- 拓端tecdat|R语言时间序列TAR阈值模型分析
- Linux学习笔记(10)
- 推荐一些高质量的自学网站
- 手机端页面Html设置
- 云授权系统服务器系统连接失败,金蝶云授权码连接不到服务器
- IDEA JVM 性能优化 相关参数设置
- SQL SERVER 20005 分布式事务配置
- Sata接口读取新硬盘读不出问题解决
- Revit API:预制零件 Fabrication Part