1、Android的震动实现——Vibrator类

(1)实现震动,首先要加上使用震动所需的权限

(2)需要用到的API

boolean hasVibrator ()//检查硬件是否有振动器

void vibrate (long milliseconds)//控制手机制动milliseconds毫秒

void vibrate (long[] pattern, int repeat)//让手机以指定pattern模式震动。

void cancel ()//关闭震动

其中方法三void vibrate (long[] pattern, int repeat)官方翻译是:传递一个int数组,它们是以毫秒为单位打开或关闭振动器的持续时间。第一个值表示在打开振动器之前要等待的毫秒数。下一个值表示在关闭振动器之前保持振动器的毫秒数。随后的值在以毫秒为单位的持续时间之间交替,以关闭振动器或打开振动器。要使模式重复,请将索引传递到要在其中开始重复的模式数组,否则为-1以禁用重复。

举个例子:vibrate(new int[]{100,200,300,400},2)是指:先等待100ms,震动200ms,再等待300ms,震动400ms,接着就从pattern[2]的位置开始重复,就是继续的等待300ms,震动400ms,一直重复下去。当然传入0就是从开头一直重复下去,传入-1就是不重复震动。

(3)使用实例

写一个工具类封装

//震动milliseconds毫秒

public static void vibrate(final Activity activity, long milliseconds) {

Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);

vib.vibrate(milliseconds);

}

//以pattern[]方式震动

public static void vibrate(final Activity activity, long[] pattern,int repeat){

Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);

vib.vibrate(pattern,repeat);

}

//取消震动

public static void virateCancle(final Activity activity){

Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);

vib.cancel();

}

调用时也非常简单,因为可能存在多个地方关闭震动,所以添加一个标志位来判断震动是否已经开启,防止多次关闭抛出异常。

//开启震动

isVirating = true;

VirateUtil.virate(XXXActivity.this, new long[]{1000, 1000, 1000, 1000}, 0)

//关闭震动

if (isVirating) {

isVirating = false;

VirateUtil.virateCancle(XXXActivity.this);

}

2、Android的振铃实现——MediaPlayer类

(1)需要用到的API

void setDataSource (Context context , Uri uri)//根据Uri设置音频,当然还有其他几个重载的方法来指定特定的音频。

void setLooping (boolean looping)//设置是否循环播放

void prepare ()//让MediaPlayer真正去装载音频文件

void start ()//开始或恢复播放

void pause ()//暂停播放,调用start()可以恢复播放

void stop ()//停止播放

boolean isPlaying ()//是否正在播放

void release ()//释放与此MediaPlayer关联的资源

(2)使用实例

同样写一个工具类封装

//开始播放

public static void playRing(final Activity activity){

try {

Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);//用于获取手机默认铃声的Uri

mMediaPlayer = new MediaPlayer();

mMediaPlayer.setDataSource(activity, alert);

mMediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);//告诉mediaPlayer播放的是铃声流

mMediaPlayer.setLooping(true);

mMediaPlayer.prepare();

mMediaPlayer.start();

} catch (Exception e) {

e.printStackTrace();

}

}

//停止播放

public static void stopRing(){

if (mMediaPlayer!=null){

if (mMediaPlayer.isPlaying()){

mMediaPlayer.stop();

mMediaPlayer.release();

}

}

}

使用就是调用上面方法即可。

(3)MediaPlayer的生命周期

引用官网上面的图片

Paste_Image.png

android 怎么调用震动,Android的震动与振铃相关推荐

  1. android java 调用js,Android中Java和JavaScript交互实例

    Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本.本文将介绍如何实现Java代码和Javascript代码的相互调用. 如 ...

  2. android JNI调用(Android Studio 3.0.1)(转)

    最近回头复习了一下android 的jni调用,却发现按以前的方法调用失败,一怒之下就重新摸索,碰了几次壁,发现网上好多教程都不能成功调用,于是记录一下现在AS版本成功好用的调用方法. 这里设定你的n ...

  3. android 7调用摄像头,Android调用摄像头拍照(兼容7.0)

    [实例简介] Android调用摄像头拍照(兼容7.0)Demo,原博客文章https://blog.csdn.net/u010356768/article/details/70808162 [实例截 ...

  4. android studio 调用c++,android studio配置opencv,调用c++,处理图像

    一.下载安卓的opencv sdk 这里下载release版的,下载后解压 二.新建工程 三.编写界面布局(工程等下上传到github) 四.添加Module,Android Studio菜单--&g ...

  5. android定时调用gc,Android性能:远程触发GC

    一.远程触发GC原理 我们都知道 GC 是java虚拟机释放内存的机制. 一般的在当前进程触发GC有两种方式: 主动触发.调用System.gc() 被动触发.预分配的内存不足 or OOM之前 有没 ...

  6. android黑盒子调用,[原创]Android群控黑盒调用 - Sekiro食用手册

    0x0 前言 之前尝试用过virjar大佬的hermesagent, 后来大佬又迭代出新的基于长链接的Sekiro, 一直想看都被耽搁了, 今天正好抽空尝试一下, 顺便写篇笔记, 有错误的地方大佬们请 ...

  7. android studio调用python,Android studio中编写Python代码-2

    Chaquopy 教程 Chaquopy Chaquopy的作用:使用Chaquopy在Android Studio添加Python环境,java和Python互调 目前调试后APP可以正常运行(20 ...

  8. android 三星调用拍照,Android拍照与相机适配问题汇总

    问题一:onActivityResult方法中的data返回为空. 问题原因:使用Intent调用手机内相机程序时,如果我们设置了照片的存储路径时,有数据表明,93%的机型的data将会是Null,所 ...

  9. android 程序调用wps,Android在调用像WPS这种第三方软件打开word时遇到ActivityNotFoundException...

    在工做的时候,项目中须要使用WPS打开office的东西,使用Intent比较简单.html boolean openFile(String path) { Intent intent = new I ...

  10. android代码调用相机,Android如何调用系统相机拍照

    本文实例为大家分享了Android调用系统相机拍照的具体代码,供大家参考,具体内容如下 /** * 调用系统相机 */ private void takePhoto() { Uri uri = nul ...

最新文章

  1. linux docker中gdb调试断点不停
  2. spoj16935 Straight Line Spiral Pattern (Act 3)
  3. java服务器端分页_使用数据表的服务器端分页
  4. linux软件中心无法安eclipse,Ubuntu软件中心安装Eclipse无法启动的问题
  5. 堆排序算法(C#实现)
  6. android 模拟器 超时,Appcelerator Studio超时等待Android模拟器启动
  7. 30种已验证有效的WordPress博客网上赚钱方法
  8. 【LG3244】[HNOI2015]落忆枫音
  9. python 简单爬虫获取气象数据发送气象定时报-预报预警信息及时推送及阿里云短信群发接口...
  10. 黄一老师:关于个人征信这几点你都未必知道!
  11. 主流消费级固态硬盘SSD接口
  12. 【Python】简单判定身份证是否合法、性别
  13. 微软控制云服务器软件,服务器远程控制用什么软件
  14. 10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 scre
  15. 安装win7x64、x86总提示文件出错或安装大型软件出错或0x0000001a、0x0000003b蓝屏
  16. mysql 异常码1903_Mysql 异常。 寻求帮助
  17. android 设置壁纸页面,Android实现手机壁纸改变的方法
  18. 【Python打卡2019】20190417之计算BMR
  19. 基于单片机蓄电池充放电检测系统设计-毕设资料
  20. 游戏推荐,游戏荒的快来挖宝

热门文章

  1. 【python】python列表去重的5种常见方法实例
  2. Unity URP渲染管线下体积光的实现
  3. 数据结构之简单迷宫求解
  4. 用luasocket读取双色球中奖号码
  5. ERNIE1.0 与 ERNIE2.0 论文解读
  6. Angular 5 整合容联云 即时通讯
  7. 数字转日期 pl/sql_PL / SQL程序检查数字是奇数还是偶数
  8. 【机器人仿真Webots教程】-控制器编程指南
  9. 错误 LNK2019,无法解析的外部符号__imp____iob_func; 无法解析的外部符号 __imp__fprintf 的解决方法。
  10. 如何在厕所、垃圾桶或小树林捡一枚BCH?看完后我笑了...