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音频和震动的基本实现相关推荐

  1. android音频系统(4):AudioService之音量管理

    前言:AudioService这个系统服务包含或者使用了几乎所有与音频有关的内容,AudioService是音频系统在java层的大本营: android音频系统,分为两个部分:数据流和策略: 数据流 ...

  2. 一次搞懂 Android 音频开发

    在接触Android音频开发后,陆陆续续的看了不少的文章,如果说查缺补漏把这些文章梳理清楚,然后逐个整合,那么确实也能完整的推导出音频开发需要掌握的技术.但是对于初学者来说,可能在开发中产生很多障碍以 ...

  3. android 实现拨通震动,Android编程实现震动与振铃的方法详解

    本文实例讲述了Android编程实现震动与振铃的方法.分享给大家供大家参考,具体如下: 1.Android的震动实现--Vibrator类 (1)实现震动,首先要加上使用震动所需的权限 (2)需要用到 ...

  4. Android中实现震动的方法

    https://blog.csdn.net/bruceyangjie/article/details/53283899 Android中实现震动的方法 版权声明:本文为博主原创文章,未经博主允许不得转 ...

  5. android音频调制通讯,android音频口通信(一)——2FSK信号调制

    转载请注明文章出处和作者! 作者:大熊(Xandy) 一.前言 之前一直都在博客园混(地址:http://www.cnblogs.com/xl19862005),最近才搬家至CSDN,由于前几个月刚换 ...

  6. Android音频开发(4):如何存储和解析wav文件

    2019独角兽企业重金招聘Python工程师标准>>> 无论是文字.图像还是声音,都必须以一定的格式来组织和存储起来,这样播放器才知道以怎样的方式去解析这一段数据,例如,对于原始的图 ...

  7. android音频系统之AudioTrack的使用

    今天,简单讲讲  AudioTrack的使用. 1.Android AudioTrack简介 在android中播放声音可以用MediaPlayer和AudioTrack两种方案的,但是两种方案是 ...

  8. Android音频开发(3):如何播放一帧音频

    本文重点关注如何在Android平台上播放一帧音频数据.阅读本文之前,建议先读一下<Android音频开发(1):基础知识>,因为音频开发过程中,经常要涉及到这些基础知识,掌握了这些重要的 ...

  9. Android音频处理 PCM格式

    Android音频处理--通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能 Android音频开发(2):使用AudioRecord录制pcm格式音频 AudioTrack读取 ...

最新文章

  1. BoBo接入云信,直播互动“连麦抢麦”分分钟搞定
  2. 《VMware 网络技术:原理与实践》—— 3.2 以太网
  3. MSSQLSERVER服务不能启动
  4. filter_var()函数
  5. linux安装openssl
  6. 今天听说了一个压缩解压整型的方式-group-varint
  7. 选中下拉列表显示全部数据_小白都能学会的多级下拉列表,让你的Excel效率提升百倍...
  8. 炸窝(Java)拼接
  9. 基于哈希表的索引堆变形(Hackerrank: QHEAP1)
  10. 三十、详测 Generics Collections: TObjectList、TObjectQueue、TObjectStack
  11. MFC 教程【9_MFC的状态】
  12. 拓端tecdat|R语言时间序列TAR阈值模型分析
  13. Linux学习笔记(10)
  14. 推荐一些高质量的自学网站
  15. 手机端页面Html设置
  16. 云授权系统服务器系统连接失败,金蝶云授权码连接不到服务器
  17. IDEA JVM 性能优化 相关参数设置
  18. SQL SERVER 20005 分布式事务配置
  19. Sata接口读取新硬盘读不出问题解决
  20. Revit API:预制零件 Fabrication Part

热门文章

  1. 群狼调研开展广州市某区开展平安建设第三方暗访
  2. el-table 全屏时,控制台从右边设为独立出来时,表格最右侧的固定列的行会对不齐解决
  3. ssh-keygen生成git ssh密钥
  4. 使用jq实现电商网站“楼梯”效果制作(左侧显示楼层号、显示对应楼层信息)
  5. 【动态规划】新年趣事之打牌
  6. L1-041 寻找250 (10 分)(三种常见的不断输入方法)
  7. sql查询结果转化为JSON数据格式
  8. 回顾强大的图片影视软件
  9. JHU计算机专业学费,【JHU】给纠结于去JHU还是别的学校的同学一点点建议~
  10. 在Windows CE下实现拨号上网