src\ MainActivity.java

package com.example.soundpoolandvirator;import java.util.HashMap;import android.media.AudioManager;import android.media.SoundPool;import android.os.Bundle;import android.os.Vibrator;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Context;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener {Button bRingStart;Button bRingPause;//震动Button bVStart;Button bVStop;Button bVForever;private Vibrator vibrator;//振动器private SoundPool sp;private HashMap<Integer, Integer> spMap;/** *  震动模式(强度) *  {100,400,100,400} 停止 开启 停止 开启 */public static final long[] PATTERN_1 =  {100,400,100,400};public static final long[] PATTERN_2 =  {100,700,100,700};public static final long[] PATTERN_3 =  {300,900,300,900};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);initWidget();initSoundPool();// 点击监听bRingStart.setOnClickListener(this);bRingPause.setOnClickListener(this);bVStart.setOnClickListener(this);bVStop.setOnClickListener(this);bVForever.setOnClickListener(this);}private void initWidget() {bRingStart = (Button) findViewById(R.id.bstart);bRingPause = (Button) findViewById(R.id.bpause);bVStart = (Button) findViewById(R.id.but_on_vibrate);bVStop = (Button) findViewById(R.id.but_off_vibrate);bVForever = (Button) findViewById(R.id.but_forever_vibrate);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic void onClick(View v) {int viewID = v.getId();switch (viewID) {//播放音效case R.id.bstart:playSounds(1, 1);break;//暂停声音case R.id.bpause:sp.pause(spMap.get(1));break;case R.id.but_on_vibrate:openVibrate(PATTERN_3, -1);break;case R.id.but_off_vibrate:stopVibrate();break;case R.id.but_forever_vibrate:openVibrate(PATTERN_2, 2);break;default:break;}}/** * 初始化SoundPool */@SuppressLint("UseSparseArrays")private void initSoundPool() {sp = new SoundPool(2, AudioManager.STREAM_MUSIC, 5);spMap = new HashMap<Integer, Integer>();spMap.put(1, sp.load(this, R.raw.water, 1));}/** * 播放音频 *  * @param sound *            加载的音频(spMap中的key) * @param number *            循环次数 (0 = no loop, -1 = loop forever) */public void playSounds(int sound, int number) {AudioManager am = (AudioManager) this.getSystemService(MainActivity.AUDIO_SERVICE);float audioMaxVolumn = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);float audioCurrentVolumn = am.getStreamVolume(AudioManager.STREAM_MUSIC);float volumnRatio = audioCurrentVolumn / audioMaxVolumn;sp.play(spMap.get(sound), volumnRatio / 2, volumnRatio / 2, 1, number,1);}/** * 打开 手机震动 * 震动大小可以通过改变pattern来设定,如果开启时间太短,震动效果可能感觉不到  * @param pattern 模式 {100,400,100,400};   // 停止 开启 停止 开启 * @param repeat  重复次数 */public void openVibrate(long[] pattern , int repeat){vibrator =  (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);vibrator.vibrate(pattern, repeat);}/** * 取消震动 */public void stopVibrate(){vibrator.cancel();}}

res\layout\ activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <Button        android:id="@+id/bstart"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true"        android:layout_marginLeft="24dp"        android:layout_marginTop="14dp"        android:text=" 播放" />    <Button        android:id="@+id/but_on_vibrate"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/bstart"        android:layout_below="@+id/bstart"        android:layout_marginTop="28dp"        android:text="打开震动" />    <Button        android:id="@+id/bpause"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBaseline="@+id/bstart"        android:layout_alignBottom="@+id/bstart"        android:layout_alignParentRight="true"        android:layout_marginRight="54dp"        android:text="暂停" />    <Button        android:id="@+id/but_off_vibrate"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBottom="@+id/but_on_vibrate"        android:layout_alignLeft="@+id/bpause"        android:text="关闭震动" />    <Button        android:id="@+id/but_forever_vibrate"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/but_on_vibrate"        android:layout_below="@+id/but_on_vibrate"        android:layout_marginTop="36dp"        android:text="永久震动" /></RelativeLayout>

音效文件

res\rew 点击打开链接(提取码:24ad)


更多相关文章

  1. Android控制闪光灯的方法(打开与关闭)
  2. Android控制闪光灯的方法(打开与关闭)
  3. 列出Android设备中所有启动的服务,及判断某个服务是否开启
  4. 重置Android中的帧动画播放
  5. android关闭或开启移动网络数据(关闭后,设备不可以上网,但可以打电
  6. Android(安卓)第六天重置版_Activity
  7. Android震动器Vibrator调用
  8. Android(安卓)WebView加载H5音视频自动播放、关闭Activity停止播
  9. android 禁用或开启四大组件setComponentEnabledSetting

随机推荐

  1. 【第765期】你不懂JS:this豁然开朗!
  2. 【第766期】你不懂JS:对象
  3. PHP函数的使用
  4. 【第808期】你不懂JS:ES6与未来 语法(中)
  5. 基于Android的淘宝网手机客户端开发见解(
  6. Android(安卓)开发者从0到1发布一个微信
  7. 【IOS和Android】Cocos2d-x 集成微信分享
  8. Android(安卓)打造任意层级树形控件 考验
  9. Android结合Retrofit实现统一加解密处理(G
  10. android缩放大图片加载