用法直接看sample

  1. package com.turtle920.androidaudioprocess;
  2.  
  3. import android.media.MediaPlayer;
  4. import android.os.Environment;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.util.Log;
  8. import android.view.View;
  9. import android.widget.Button;
  10.  
  11. import java.io.IOException;
  12.  
  13. public class MainActivity extends AppCompatActivity {
  14.  
  15. MediaPlayer mp = new MediaPlayer();
  16. float leftVol=0.5f, rightVol=0.5f;
  17. String song = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Music/tf.mp3";
  18.  
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_main);
  23.  
  24. try {
  25. mp.setDataSource(song);
  26. mp.prepare();
  27. mp.setVolume(leftVol,rightVol);
  28. } catch (Exception e) {
  29. Log.e("DEBUG", "" + e.toString());
  30. e.printStackTrace();
  31. }
  32.  
  33. Button button1 = (Button) findViewById(R.id.button_start);
  34. button1.setOnClickListener(new View.OnClickListener() {
  35. @Override
  36. public void onClick(View v) {
  37. mp.start();
  38. }
  39. });
  40.  
  41. Button button2 = (Button) findViewById(R.id.button_pause);
  42. button2.setOnClickListener(new View.OnClickListener() {
  43. @Override
  44. public void onClick(View v) {
  45. mp.pause();
  46. }
  47. });
  48.  
  49. Button button3 = (Button) findViewById(R.id.button_replay);
  50. button3.setOnClickListener(new View.OnClickListener() {
  51. @Override
  52. public void onClick(View v) {
  53. mp.stop();
  54. try {
  55. mp.prepare();
  56. } catch (IOException e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. });
  61.  
  62. Button button4 = (Button)findViewById(R.id.button_l);
  63. button4.setOnClickListener(new View.OnClickListener() {
  64. @Override
  65. public void onClick(View v) {
  66. if (leftVol+0.05f<=1.0f) leftVol+=0.05f;
  67. if (rightVol-0.05f>=0f) rightVol-=0.05f;
  68. Log.e("DEBUG",""+leftVol+" "+rightVol);
  69. mp.setVolume(leftVol, rightVol);
  70. }
  71. });
  72.  
  73. Button button5 = (Button)findViewById(R.id.button_r);
  74. button5.setOnClickListener(new View.OnClickListener() {
  75. @Override
  76. public void onClick(View v) {
  77. if (leftVol-0.05f>=0f) leftVol-=0.05f;
  78. if (rightVol+0.05f<=1.0f) rightVol+=0.05f;
  79. Log.e("DEBUG",""+leftVol+" "+rightVol);
  80. mp.setVolume(leftVol, rightVol);
  81. }
  82. });
  83.  
  84. }
  85. }

注意要在manifest里申明权限

  1. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

另外如果真机环境API 23+ 还需要在机子上给app读取SD卡得权限

android中MediaPlayer类的用法的更多相关文章

  1. android中Handle类的用法

    android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...

  2. [转]Android中Application类的用法

    原文链接:http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html Application类 Application ...

  3. Android中Calendar类的用法总结

    Calendar是Android开发中需要获取时间时必不可少的一个工具类,通过这个类可以获得的时间信息还是很丰富的,下面做一个总结,以后使用的时候就不用总是去翻书或者查资料了. 在获取时间之前要先获得 ...

  4. android中PreferenceScreen类的用法

    PreferenceScreen preference是偏好,首选的意思,PreferenceScreen个人翻译成 “偏好显示”,明白这个意思就好,就是说根据特点灵活的定义显示内容风格,一个屏幕可以 ...

  5. 三、android中Handle类的用法

    当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉.Ha ...

  6. Android中Cursor类的概念和用法[转]

    首页 > 程序开发 > 移动开发 > Android > 正文   Android中Cursor类的概念和用法 2011-09-07      0个评论       收藏    ...

  7. Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法

    Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法 如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1i ...

  8. C#中timer类的用法

    C#中timer类的用法 关于C#中timer类  在C#里关于定时器类就有3个   1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类 ...

  9. Android中一个类实现的接口数不能超过七个

    近期一段时间,在开发Android应用程序的过程中,发现Android中一个类实现的接口数超过七个的时候,常常会出现超过第7个之后的接口不能正常使用.

随机推荐

  1. Autofac Getting Started(默认的构造函数注入)

    https://autofaccn.readthedocs.io/en/latest/getting-started/index.html The basic pattern for integrat ...

  2. MySQL explain 、explain extended用法

    explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了,如: explai ...

  3. skynet之伪取消定时器

    1.截至目前群里的成员已经对skynet中的timeout提出了更多的要求.目前skynet提供的定时器是倒计时形式,且定时器一旦设置后,便不能撤销(至少目前的实现是这样),然后调用 cb 最近有人提 ...

  4. HTML5标签学习

    <abbr> 表示一个缩写形式,比如 "Inc."."etc.".通过对缩写词语进行标记,您就能够为浏览器.拼写检查程序.翻译系统以及搜索引擎分度器 ...

  5. Educational Codeforces Round 23E

    题意:刚开始有一个空集合,现在有三种操作1,加x到集合中,2,删去集合中的一个x,3,查询集合中的x^p<l的个数 套路题,(看到异或和集合操作条件反射01字典树),加和删操作不说了,主要是查询 ...

  6. opencv:通过滑动条调节亮度和对比度

    示例代码: #include <opencv.hpp> using namespace cv; using namespace std; void on_change(int, void* ...

  7. USB转串口WIN8驱动安装

    http://jingyan.baidu.com/article/11c17a2c0bb606f446e39da0.html  //查看百度经验 http://jingyan.baidu.com/ar ...

  8. python基础之网络基础

    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...

  9. LeetCode OJ:Merge Two Sorted Lists(合并两个链表)

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  10. L126

    Like so many things, it is not what's outside, but what is inside that counts. 许多事物都是如此,外表看起來虽不起眼,但是 ...