失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android 定时响铃 Android开发振动和响铃

android 定时响铃 Android开发振动和响铃

时间:2018-12-27 22:41:42

相关推荐

android 定时响铃 Android开发振动和响铃

我们在做Android开发的时候,有时候会用到振动和响铃的功能,特别是一些有关通信类的,在接受到消息的时候需要通过振动和响铃的方式去提醒用户,下面就简单介绍一下具体怎么操作的。

1、振动功能的实现

(1)首先我们需要加入振动的权限

(2)我们需要用到Vibrator类去实现振动功能,下面说一下需要用到的几个方法:

//检查硬件是否有振动器

boolean hasVibrator ()

//控制手机振动milliseconds毫秒

void vibrate (long milliseconds)

//控制手机以指定pattern模式振动。

void vibrate (long[] pattern, int repeat)

//关闭震动

void cancel ()

其中除了第三个方法以外,其他的几个方法都好理解,这里就不做解释了。下面来说一下第三个方法,需要传递两个参数:pattern和repeat

pattern:传递的是一个int类型的数组,它们是以毫秒为单位打开或关闭振动器的持续时间。第一个值表示在打开振动器之前要等待的毫秒数。下一个值表示在关闭振动器之前保持振动器的毫秒数。随后的值在以毫秒为单位的持续时间之间交替,以关闭振动器或打开振动器。

repeat:要使模式重复,请将索引传递到要在其中开始重复的模式数组,否则为-1以禁用重复。传入0是开头一直重复下去,传入2是从下标为2的地方开始重复振动。

(3)下面简单封装了一个工具类

public class VibrateUtil {

/**

* 让手机振动milliseconds毫秒

*/

public static void vibrate(Context context, long milliseconds) {

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

if(vib.hasVibrator()){ //判断手机硬件是否有振动器

vib.vibrate(milliseconds);

}

}

/**

* 让手机以我们自己设定的pattern[]模式振动

* long pattern[] = {1000, 20000, 10000, 10000, 30000};

*/

public static void vibrate(Context context, long[] pattern,int repeat){

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

if(vib.hasVibrator()){

vib.vibrate(pattern,repeat);

}

}

/**

* 取消震动

*/

public static void virateCancle(Context context){

//关闭震动

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

vib.cancel();

}

}

(4)开启和关闭振动

// 开启震动

isVirating = true;

VirateUtil.virate(context, new long[]{100, 200, 100, 200}, 0)

//关闭震动

if (isVirating) {//防止多次关闭抛出异常,这里加个参数判断一下

isVirating = false;

VirateUtil.virateCancle(context);

}

2、响铃功能的实现

(1)权限问题

Android设置响铃铃需要更改系统设置,所以在6.0以后提高了权限级别,需要使用 WRITE_SETTINGS 权限才能进行响铃铃设置。

记得针对6.0设备,进行动态获取权限。

(2)播放响铃我们需要用到MediaPlayer类去实现,下面说一下需要用到的几个方法:

//根据Uri设置音频,当然还有其他几个重载的方法来指定特定的音频。

void setDataSource (Context context , Uri uri)

//设置是否循环播放

void setLooping (boolean looping)

//让MediaPlayer真正去装载音频文件

void prepare ()

//开始或恢复播放

void start ()

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

void pause ()

//停止播放

void stop ()

//是否正在播放

boolean isPlaying ()

//释放与此MediaPlayer关联的资源

void release ()

这里面几个方法都挺简单的,具体也没什么需要解释的。

(3)下面还是简单封装了一个工具类

public class MediaUtil {

private static MediaPlayer mMediaPlayer;

//开始播放

public static void playRing(Context context){

try {

//用于获取手机默认铃声的Uri

Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);

mMediaPlayer = new MediaPlayer();

mMediaPlayer.setDataSource(context, alert);

//告诉mediaPlayer播放的是铃声流

mMediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);

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();

}

}

}

}

(4)开启和关闭响铃

//开启

MediaUtil.playRing(context);

//关闭

MediaUtil.stopRing();

3、总结

以上就是开发振动和响铃的一个简单的例子,希望对大家有所帮助。。。

如果觉得《android 定时响铃 Android开发振动和响铃》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。