Android 实现背景音乐的播放及震动

来源:互联网 发布:单片机输出电流 编辑:程序博客网 时间:2024/06/05 22:44

Android 实现背景音乐的播放及震动

实现音乐应用

播放背景音乐

基础

  1. Android支持一般音乐格式,如mid格式,mp3格式。
  2. 将要引用的音频文件放入文件夹“res/raw”
  3. 在Eclipse中,”raw”文件夹默认在”res”文件夹下。在Android编译器下,需要自己添加。
  4. 需要import “Android.media.MediaPlayer”

实现细节:

  • 声明MediaPlayer变量
    MediaPlayer MediaPlayer;

  • 实例化该对象,并且用已添加至资源文件夹的音乐文件来初始化该对象。
    mediaPlayer = MediaPlayer.create(this, R.raw.xxx);

  • 播放音乐
    if(!mediaPlayer.isPlaying())mediaPlayer.start();

  • 暂停播放
    if(mediaPlayer.isPlaying())mediaPlayer.pause();

  • 停止播放
    if(mediaPlayer.isPlaying())mediaPlayer.stop();

音效

基础


  1. 支持普通的音乐格式,如“mid格式”、“MP3格式”和“ogg格式”,但是利用SoundPool来实现播放必须保证该音乐文件的大小不超过1MB
  2. 需要将音频问价能放置在’res/raw’中。
  3. 需要import “android.media.SoundPool”。

tips:SoundPool适用于短促且对反应速度比较高的情况(游戏音效或者按键声。)

实现细节:

  • 声明SoundPool变量:
    SoundPool soundPool;
  • 声明”HashMap

手机震动

使安卓手机震动能够给用户提供一个触觉上的反馈与交互,可以保证更佳的用户体验并且使得用户直接感知到安卓应用的反馈。(无法在安卓模拟器上调试。)

基础

要实现震动功能必须在Manifest.xml中添加permission。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="...“><uses-permissionandroid:name="android.permission.VIBRATE"/><application android:label="..."> … </application></manifest>

震动时长(自定义)

  • 实例化 Vibrator对象:

Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);

  • 震动时长设置(300毫秒)
    v.vibrate(300);

自定义震动模式

  • 实例化

Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
- 举例:
利用自定义的模式使得手机以摩斯密码的模式向使用者传递“SOS”讯息。在莫斯密码中s = “…”,o = “—”,其中有在“.”和“-”的停顿,包括字母和单词之间的停顿时长也不相同。

以下的为不同的停顿长度:

int dot = 200; // 莫斯密码点的震动时长int dash = 500; // 莫斯密码横的震动时长int short_gap = 200; // 点与横之间的时长间隔int medium_gap = 500; // 字母之间的时间间隔int long_gap = 1000; // 单词之间的时间间隔

模式定义(SOS):

long[] pattern = {0, // 立刻开始dot, short_gap, dot, short_gap, dot, // smedium_gap,dash, short_gap, dash, short_gap, dash, // omedium_gap,dot, short_gap, dot, short_gap, dot, // slong_gap};

实现震动:

v.vibrate(pattern, -1); //-1表示不重复震动

用户自定义停止震动

实例化Vibrator

Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);

立即开始震动,震动200毫秒,停止500毫秒

long[] pattern = { 0, 200, 500 };v.vibrate(pattern, 0);

tips:
0表示的是重复该震动模式,从pattern数组下标0开始。若输入1,实现的震动模式会变成震动500毫秒暂停200毫秒。

取消震动,可由用户对应用发出的某指令来成为取消震动的条件。由开发者自定义:

v.cancel();

下面的链接是实现以上功能的Demo,以供参考。

Demo链接

作者:林冰
链接:Android 实现背景音乐的播放及震动