声音合集

阳光穿透心脏的1/2处 2022-12-18 01:54 227阅读 0赞

系统声音

  1. package com.ahsoft.tachymeterapp.utils;
  2. import android.media.Ringtone;
  3. import android.media.RingtoneManager;
  4. import android.net.Uri;
  5. import android.os.Build;
  6. import static org.litepal.LitePalApplication.getContext;
  7. /**
  8. * created by Taoyuan on 2020/10/23
  9. * 获取系统声音
  10. */
  11. public class SoundUtils {
  12. private Ringtone mRingtone;
  13. public SoundUtils() {
  14. Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
  15. mRingtone = RingtoneManager.getRingtone(getContext(), uri);//通过Uri 来获取提示音的实例对象
  16. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
  17. mRingtone.setLooping(false);
  18. }
  19. }
  20. public void play() {
  21. if (!mRingtone.isPlaying()) {
  22. mRingtone.play();
  23. }
  24. }
  25. public void stop() {
  26. if (mRingtone != null) {
  27. mRingtone.stop();
  28. mRingtone = null;
  29. }
  30. }
  31. }

资源声音

  1. package com.jty.myutils.utils;
  2. import android.content.Context;
  3. import android.content.res.AssetFileDescriptor;
  4. import android.content.res.AssetManager;
  5. import android.media.MediaPlayer;
  6. import java.io.IOException;
  7. /**
  8. * created by Taoyuan on 2020/7/3
  9. */
  10. public class SoundUtils {
  11. private MediaPlayer player;
  12. private AssetManager assetManager;
  13. public SoundUtils(Context context, String fileName) {
  14. player = new MediaPlayer();
  15. assetManager = context.getResources().getAssets();
  16. setDataSource(fileName);
  17. }
  18. public void setDataSource(String fileName) {
  19. try {
  20. AssetFileDescriptor fileDescriptor = assetManager.openFd(fileName);
  21. player.setDataSource(
  22. fileDescriptor.getFileDescriptor(),
  23. fileDescriptor.getStartOffset(),
  24. fileDescriptor.getLength());
  25. player.prepare();
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. public void play() {
  31. if (!player.isPlaying())
  32. player.start();
  33. }
  34. public void stop() {
  35. if (player != null && player.isPlaying()) {
  36. player.stop();
  37. player.reset();
  38. }
  39. }
  40. public void destroy() {
  41. if (player != null) {
  42. player.release();
  43. player = null;
  44. }
  45. if (assetManager != null) {
  46. assetManager.close();
  47. assetManager = null;
  48. }
  49. }
  50. }

Note

  1. 可以使用raw,可以直接使用 R.raw.资源名称
  2. 以上两种方法均可以直接提供输入流
  3. 可以使用文件系统

振动

  1. Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
  2. vibrator.vibrate(500);//震动时长 ms

振动需要权限

<uses-permission name="android.permission.VIBRATE" />

发表评论

表情:
评论列表 (有 0 条评论,227人围观)

还没有评论,来说两句吧...

相关阅读

    相关 分布式

    1.Spring 的事务 Spring框架为应用程序提供了强大的事务管理功能。它通过将事务逻辑与业务逻辑分离,使得开发者可以专注于业务逻辑的实现,而不必过多关注事务的管理

    相关 JAVA

    线性表、栈、队列、优先队列和集合 数据结构是以某种形式将数据组织在一起的合集。数据结构不仅存储数据,还支持访问和处理数据的操作。 JAVA的合集框架如下图所示![在这