android开发之蜂鸣提示音和震动提示的实现原理与参考代码

路过花开岁月

路过花开岁月

2016-02-19 10:48

下面请跟着图老师小编一起来了解下android开发之蜂鸣提示音和震动提示的实现原理与参考代码,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!
最近在读zxing项目,学到了不少东西。推荐大家也读读。里面有个BeepManager类,实现一个蜂鸣音和震动的实现。我们一起来看看他是怎么做的:
蜂鸣
1.准备一个 音频文件 比如:beep.ogg。 ogg格式是声音压缩格式的一种,类似mp3这样。我们准备播放它,就产生了蜂鸣的效果。
2.为activity注册的默认 音频通道 。
  activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);
 这里声明为 STREAM_MUSIC的通道,就是多媒体播放,注册后,我们使用 手机上的音量大小键就可以调节播放的声音大小。
如果不设定这个通道的话,我们的这个activity默认音量按钮处理将作用于 手机铃音的大小。
3.检查当前的 铃音模式,或者成为 情景模式。
  说明:getRingerMode() ——返回当前的铃声模式。如RINGER_MODE_NORMAL(普通)、RINGER_MODE_SILENT(静音)、RINGER_MODE_VIBRATE(震动)
代码如下:

  //如果当前是铃音模式,则继续准备下面的 蜂鸣提示音操作,如果是静音或者震动模式。就不要继续了。因为用户选择了无声的模式,我们就也不要出声了。
AudioManager audioService = (AudioManager) activity
.getSystemService(Context.AUDIO_SERVICE);
if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) {
shouldPlayBeep = false;
}

4.初始化MediaPlayer对象,指定播放的声音 通道为 STREAM_MUSIC,这和上面的步骤一致,指向了同一个通道。  MediaPlayer mediaPlayer = new MediaPlayer();
  mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
  注册事件。当播放完毕一次后,重新指向流文件的开头,以准备下次播放。
代码如下:

  // When the beep has finished playing, rewind to queue up another one.
mediaPlayer
.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer player) {
player.seekTo(0);
}
});

设定数据源,并准备播放
代码如下:

AssetFileDescriptor file = activity.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 ioe) {
Log.w(TAG, ioe);
mediaPlayer = null;
}
return mediaPlayer;

5.开始播放
代码如下:

if (playBeep && mediaPlayer != null) {
mediaPlayer.start();
}

-----------------------------------------------------------------
震动
这个比较简单。分两步:
1.声明权限
  在AndroidManifest.xml 里写
代码如下:

  uses-permission android:name="android.permission.VIBRATE"/

2.获得震动服务。
代码如下:

  Vibrator vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE);

3.启动震动。
代码如下:

  vibrator.vibrate(VIBRATE_DURATION);

代码如下:

public void playBeepSoundAndVibrate() {
if (enableVibrate) {
Vibrator vibrator = (Vibrator) activity
.getSystemService(Context.VIBRATOR_SERVICE);
//震动一次
vibrator.vibrate(VIBRATE_DURATION);
//第一个参数,指代一个震动的频率数组。每两个为一组,每组的第一个为等待时间,第二个为震动时间。
// 比如 [2000,500,100,400],会先等待2000毫秒,震动500,再等待100,震动400
//第二个参数,repest指代从 第几个索引(第一个数组参数) 的位置开始循环震动。
//会一直保持循环,我们需要用 vibrator.cancel()主动终止
//vibrator.vibrate(new long[]{300,500},0);
}
}
展开更多 50%)
分享

猜你喜欢

android开发之蜂鸣提示音和震动提示的实现原理与参考代码

编程语言 网络编程
android开发之蜂鸣提示音和震动提示的实现原理与参考代码

tim怎么换提示音 tim提示音怎么设置

tim 软件教程 聊天软件 应用软件
tim怎么换提示音 tim提示音怎么设置

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

tim提示音制作教程 怎么制作tim提示音

tim 软件教程 聊天软件 应用软件
tim提示音制作教程 怎么制作tim提示音

陪聊如何关闭提示音?

手机软件 应用软件
陪聊如何关闭提示音?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Android开发之串口编程原理和实现方式

编程语言 网络编程
Android开发之串口编程原理和实现方式

来往提示音怎么修改

手机软件 应用软件
来往提示音怎么修改

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Android点亮屏幕或屏幕解锁和锁定以及其他相关权限实现代码

Android点亮屏幕或屏幕解锁和锁定以及其他相关权限实现代码

MAC使用图像捕捉查看和管理iPhone照片的方法

MAC使用图像捕捉查看和管理iPhone照片的方法
下拉加载更多内容 ↓