一、android手机震动实现方式:
/**
* 。两个Vibrate函数的参数简单介绍如下:
* <p>
* final Activity activity :调用该方法的Activity实例
* <p>
* long milliseconds :震动的时长,单位是毫秒
* <p>
* <p>
* long[] pattern :自定义震动模式 。数组中数字的含义依次是[静止时长,震动时长,静止时长,震动时长。。。]
* 时长的单位是毫秒
* <p>
* <p>
* boolean isRepeat : 是否反复震动,如果是true,反复震动,如果是false,只震动一次
*
* @param activity
* @param milliseconds
*/
public static void Vibrate(final Activity activity, long milliseconds) {
Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(milliseconds);
}
public static void Vibrate(final Activity activity, long[] pattern, boolean isRepeat) {
vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(pattern, isRepeat ? 1 : -1);
}
/**
* 震动取消
*/
public static void VibrateCancel() {
if (vib.hasVibrator()) {
vib.cancel();
}
}
在这里我使用的是循环震动的方式:
long[] pattern = new long[]{2000, 3000, 2000, 3000, 2000, 3000, 2000, 3000, 2000, 3000, 2000, 3000, 2000, 3000, 2000, 3000, 2000, 3000};
TipHelper.Vibrate(mActivity, pattern, false);
二、在android之前在项目中如果给用户一个提示音一般我们直接使用Notification即可:
// 播放提示音短(6.0以上不能使用)
// 返回Notification id
@TargetApi(Build.VERSION_CODES.M)
public static void PlaySound(final Context context) {
NotificationManager mgr = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification nt = new Notification();
nt.defaults = Notification.DEFAULT_SOUND;
int soundId = new Random(System.currentTimeMillis())
.nextInt(Integer.MAX_VALUE);
mgr.notify(soundId, nt);
}
但是发现6.0以上不能用了,如下图:
说是没有小图标,我又不显示通知,如果加了小图标手机会显示通知栏的。
那到底为什么呢?
既然报的是mgr.notify(soundId, nt);那么就来看看notify方法,
/**
* Lollipop with an extra sugar coating on the outside!
*/
public static final int LOLLIPOP_MR1 = 22;
只要是版本大于22直接抛出异常,因此在6.0以后这个方法没用了!
三、播放系统音乐:
上面的提示音没了,我们可以进行播放系统音乐的方式来提醒用户
//播放默认铃声
public static void startAlarm(Context mContext) {
Uri mediaUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
mMediaPlayer = MediaPlayer.create(mContext,
mediaUri);
mMediaPlayer.setLooping(false);
mMediaPlayer.start();
}
//停止默认铃声
public static void stopAlarm() {
if (mMediaPlayer != null)
mMediaPlayer.stop();
}
四、当然也可以使用SoundPool的方式播放自定义声音
详细请看:http://blog.csdn.net/huangxiaoguo1/article/details/53783023
好了,有什么好的方式,敬请指教,谢谢….