基础小功能之(1)震动,(2)检测app是否在前台运行(3)播放短铃声
//开启震动
//添加权限<uses-permission android:name="android.permission.VIBRATE" />
private void openVib() { /* * 想设置震动大小可以通过改变pattern来设定,如果开启时间太短,震动效果可能感觉不到 * */ vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); long[] pattern = {100, 1000,100,1000}; // 停止 开启 停止 开启 vibrator.vibrate(pattern, -1); //重复两次上面的pattern 如果只想震动一次,index设为-1 //vibrator.cancel();//取消方法 }
//检测程序是否在后台运行
private boolean isRunningForeground(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); ComponentName cn = am.getRunningTasks(1).get(0).topActivity; String currentPackageName = cn.getPackageName(); if (!TextUtils.isEmpty(currentPackageName) && currentPackageName.equals(getPackageName())) { return true; } return false; }
//播放短音效
private void playSound() { SoundPool sp; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { sp = new SoundPool.Builder() .setMaxStreams(5) .build(); } else { sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); } final int soundId = sp.load(this, R.raw.sound, 1); //异步需要等待加载完成,音频才能播放成功 sp.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { if (status == 0) { //第一个参数soundID //第二个参数leftVolume为左侧音量值(范围= 0.0到1.0) //第三个参数rightVolume为右的音量值(范围= 0.0到1.0) //第四个参数priority 为流的优先级,值越大优先级高,影响当同时播放数量超出了最大支持数时SoundPool对该流的处理 //第五个参数loop 为音频重复播放次数,0为值播放一次,-1为无限循环,其他值为播放loop+1次 //第六个参数 rate为播放的速率,范围0.5-2.0(0.5为一半速率,1.0为正常速率,2.0为两倍速率) soundPool.play(soundId, 1, 1, 1, 0, 1); } } }); }